Merge "When syncing a project with a shared object store, disable automatic pruning."

This commit is contained in:
David Pursehouse 2016-09-14 20:48:24 +00:00 committed by Gerrit Code Review
commit 01b7d758d5

View File

@ -397,9 +397,12 @@ later is required to fix a server side protocol bug.
return fetched return fetched
def _GCProjects(self, projects): def _GCProjects(self, projects):
gitdirs = {} gc_gitdirs = {}
for project in projects: 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)) has_dash_c = git_require((1, 7, 2))
if multiprocessing and has_dash_c: 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) jobs = min(self.jobs, cpu_count)
if jobs < 2: if jobs < 2:
for bare_git in gitdirs.values(): for bare_git in gc_gitdirs.values():
bare_git.gc('--auto') bare_git.gc('--auto')
return return
@ -431,7 +434,7 @@ later is required to fix a server side protocol bug.
finally: finally:
sem.release() sem.release()
for bare_git in gitdirs.values(): for bare_git in gc_gitdirs.values():
if err_event.isSet(): if err_event.isSet():
break break
sem.acquire() sem.acquire()