lib/pull: Don't request deltas for unchanged commits
authorColin Walters <walters@verbum.org>
Tue, 26 Sep 2017 21:21:59 +0000 (17:21 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Wed, 27 Sep 2017 19:04:11 +0000 (19:04 +0000)
I noticed this while debugging why I was seeing "2 metadata objects" fetched for
a different PR. I knew 1 was detached meta, but the other turned out to be this.

There's no reason to request a delta if the ref is unchanged.

Closes: #1220
Approved by: jlebon

src/libostree/ostree-repo-pull.c

index b187175c8e2df447f35882034d743cc2dbffb642..8a699ca0805d6a3187573b887a07f75eaab05b25 100644 (file)
@@ -3117,10 +3117,14 @@ initiate_request (OtPullData                 *pull_data,
             g_clear_pointer (&delta_from_revision, g_free);
         }
 
-      /* This is similar to the below, except we *might* use the previous
-       * commit, or we might do a scratch delta first.
+      /* If the current ref is the same, we don't do a delta request, just a
+       * scan. Otherise, use the previous commit if available, or a scratch
+       * delta.
        */
-      initiate_delta_request (pull_data, delta_from_revision ?: NULL, to_revision, ref);
+      if (delta_from_revision && g_str_equal (delta_from_revision, to_revision))
+        queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref);
+      else
+        initiate_delta_request (pull_data, delta_from_revision ?: NULL, to_revision, ref);
     }
   else
     {