mirror of
https://gerrit.googlesource.com/git-repo
synced 2026-01-12 01:20:26 +00:00
project: disable auto-gc for depth=1 in git config
During sync, `git checkout` can trigger fetch for missing objects in partial clones. This internal fetch can trigger `git maintenance` or `git gc` and cause delays during the local checkout phase. Set maintenance.auto to false and gc.auto to 0 in during `_InitRemote` if `depth=1` to ensure that implicit fetches spawned by git skip GC. Bug: 379111283 Change-Id: I6b22a4867f29b6e9598746cb752820a84dc2aeb6 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/540681 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Gavin Mak <gavinmak@google.com> Commit-Queue: Gavin Mak <gavinmak@google.com>
This commit is contained in:
@@ -3316,6 +3316,15 @@ class Project:
|
||||
remote.ResetFetch(mirror=True)
|
||||
remote.Save()
|
||||
|
||||
# Disable auto-gc for depth=1 to prevent hangs during lazy fetches
|
||||
# inside git checkout for partial clones.
|
||||
effective_depth = (
|
||||
self.clone_depth or self.manifest.manifestProject.depth
|
||||
)
|
||||
if effective_depth == 1:
|
||||
self.config.SetBoolean("maintenance.auto", False)
|
||||
self.config.SetInt("gc.auto", 0)
|
||||
|
||||
def _InitMRef(self):
|
||||
"""Initialize the pseudo m/<manifest branch> ref."""
|
||||
if self.manifest.branch:
|
||||
|
||||
Reference in New Issue
Block a user