diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-03-16 17:53:07 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-03-16 17:53:07 -0700 |
commit | 6969ac64bf1c7bc43e897d6bfe7d2450d37e9aa9 (patch) | |
tree | 282ec839d4f21b10780f3942460e2103a77b98ff /builtin/remote.c | |
parent | Merge branch 'tk/empty-untracked-cache' (diff) | |
parent | refs/files-backend: optimize reading of symbolic refs (diff) | |
download | tgif-6969ac64bf1c7bc43e897d6bfe7d2450d37e9aa9.tar.xz |
Merge branch 'ps/fetch-mirror-optim'
Various optimization for "git fetch".
* ps/fetch-mirror-optim:
refs/files-backend: optimize reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs: add ability for backends to special-case reading of symbolic refs
fetch: avoid lookup of commits when not appending to FETCH_HEAD
upload-pack: look up "want" lines via commit-graph
Diffstat (limited to 'builtin/remote.c')
-rw-r--r-- | builtin/remote.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/builtin/remote.c b/builtin/remote.c index 6f27ddc47b..0142ed09b5 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -766,13 +766,15 @@ static int mv(int argc, const char **argv) for_each_ref(read_remote_branches, &rename); for (i = 0; i < remote_branches.nr; i++) { struct string_list_item *item = remote_branches.items + i; - int flag = 0; + struct strbuf referent = STRBUF_INIT; - read_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag); - if (!(flag & REF_ISSYMREF)) + if (refs_read_symbolic_ref(get_main_ref_store(the_repository), item->string, + &referent)) continue; if (delete_ref(NULL, item->string, NULL, REF_NO_DEREF)) die(_("deleting '%s' failed"), item->string); + + strbuf_release(&referent); } for (i = 0; i < remote_branches.nr; i++) { struct string_list_item *item = remote_branches.items + i; |