Merge "When syncing a project with a shared object store, disable automatic pruning."
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 9124a65..ecf2ffc 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -397,9 +397,12 @@
return fetched
def _GCProjects(self, projects):
- gitdirs = {}
+ gc_gitdirs = {}
for project in projects:
- gitdirs[project.gitdir] = project.bare_git
+ if len(project.manifest.GetProjectsWithName(project.name)) > 1:
+ print('Shared project %s found, disabling pruning.' % project.name)
+ project.bare_git.config('--replace-all', 'gc.pruneExpire', 'never')
+ gc_gitdirs[project.gitdir] = project.bare_git
has_dash_c = git_require((1, 7, 2))
if multiprocessing and has_dash_c:
@@ -409,7 +412,7 @@
jobs = min(self.jobs, cpu_count)
if jobs < 2:
- for bare_git in gitdirs.values():
+ for bare_git in gc_gitdirs.values():
bare_git.gc('--auto')
return
@@ -431,7 +434,7 @@
finally:
sem.release()
- for bare_git in gitdirs.values():
+ for bare_git in gc_gitdirs.values():
if err_event.isSet():
break
sem.acquire()