gc: Add tags to remote pack list

If tags are omitted from the remote pack list, they must be present in
local pack. However, local packs don't have promisor objects, meaning
that all blobs must be available locally, and therefore all missing
blobs will be downloaded during rev-list phase. Git downloads those
sequentially, by invokving fetch operation (rev-list/fetch).

Instead of downloading tags' blobs, instruct Git to include all tags in
remote rev-list operation. This change was tested with `git fsck --all`.

R=yiwzhang@google.com

Bug: b/392732561
Change-Id: Id94a40aebbe4f084c952329583d559d296db1a11
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/451422
Reviewed-by: Yiwei Zhang <yiwzhang@google.com>
Tested-by: Josip Sokcevic <sokcevic@chromium.org>
Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
This commit is contained in:
Josip Sokcevic 2025-02-05 19:35:45 +00:00 committed by LUCI
parent 99eca45eb2
commit 8d5f032611

View File

@ -206,6 +206,7 @@ class Gc(Command):
"--objects", "--objects",
f"--remotes={project.remote.name}", f"--remotes={project.remote.name}",
"--filter=blob:none", "--filter=blob:none",
"--tags",
], ],
capture_stdout=True, capture_stdout=True,
verify_command=True, verify_command=True,
@ -228,6 +229,7 @@ class Gc(Command):
"--indexed-objects", "--indexed-objects",
"--not", "--not",
f"--remotes={project.remote.name}", f"--remotes={project.remote.name}",
"--tags",
], ],
capture_stdout=True, capture_stdout=True,
verify_command=True, verify_command=True,