diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-10-28 16:01:17 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-10-28 16:01:17 (GMT) |
commit | 39000e849970a554a257577dcb2fb844a523a1d1 (patch) | |
tree | 26911732b4cb4f2c6389cbb7bbfb437c9e406025 /builtin | |
parent | 96ec83ce5207be0aac3c1df1ac92356f9de9ad81 (diff) | |
parent | 5827a03545663f6d6b491a35edb313900608568b (diff) | |
download | git-39000e849970a554a257577dcb2fb844a523a1d1.zip git-39000e849970a554a257577dcb2fb844a523a1d1.tar.gz git-39000e849970a554a257577dcb2fb844a523a1d1.tar.bz2 |
Merge branch 'jk/fetch-quick-tag-following' into maint
When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* jk/fetch-quick-tag-following:
fetch: use "quick" has_sha1_file for tag following
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/fetch.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c index 164623b..cd7e3ce 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -233,9 +233,10 @@ static void find_non_local_tags(struct transport *transport, * as one to ignore by setting util to NULL. */ if (ends_with(ref->name, "^{}")) { - if (item && !has_object_file(&ref->old_oid) && + if (item && + !has_object_file_with_flags(&ref->old_oid, HAS_SHA1_QUICK) && !will_fetch(head, ref->old_oid.hash) && - !has_sha1_file(item->util) && + !has_sha1_file_with_flags(item->util, HAS_SHA1_QUICK) && !will_fetch(head, item->util)) item->util = NULL; item = NULL; @@ -248,7 +249,8 @@ static void find_non_local_tags(struct transport *transport, * to check if it is a lightweight tag that we want to * fetch. */ - if (item && !has_sha1_file(item->util) && + if (item && + !has_sha1_file_with_flags(item->util, HAS_SHA1_QUICK) && !will_fetch(head, item->util)) item->util = NULL; @@ -268,7 +270,8 @@ static void find_non_local_tags(struct transport *transport, * We may have a final lightweight tag that needs to be * checked to see if it needs fetching. */ - if (item && !has_sha1_file(item->util) && + if (item && + !has_sha1_file_with_flags(item->util, HAS_SHA1_QUICK) && !will_fetch(head, item->util)) item->util = NULL; |