diff --git a/subcmds/sync.py b/subcmds/sync.py index 9124a653..ecf2ffc0 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -397,9 +397,12 @@ later is required to fix a server side protocol bug. 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 @@ later is required to fix a server side protocol bug. 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 @@ later is required to fix a server side protocol bug. finally: sem.release() - for bare_git in gitdirs.values(): + for bare_git in gc_gitdirs.values(): if err_event.isSet(): break sem.acquire()