summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--subcmds/sync.py11
1 files changed, 7 insertions, 4 deletions
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.
397 return fetched 397 return fetched
398 398
399 def _GCProjects(self, projects): 399 def _GCProjects(self, projects):
400 gitdirs = {} 400 gc_gitdirs = {}
401 for project in projects: 401 for project in projects:
402 gitdirs[project.gitdir] = project.bare_git 402 if len(project.manifest.GetProjectsWithName(project.name)) > 1:
403 print('Shared project %s found, disabling pruning.' % project.name)
404 project.bare_git.config('--replace-all', 'gc.pruneExpire', 'never')
405 gc_gitdirs[project.gitdir] = project.bare_git
403 406
404 has_dash_c = git_require((1, 7, 2)) 407 has_dash_c = git_require((1, 7, 2))
405 if multiprocessing and has_dash_c: 408 if multiprocessing and has_dash_c:
@@ -409,7 +412,7 @@ later is required to fix a server side protocol bug.
409 jobs = min(self.jobs, cpu_count) 412 jobs = min(self.jobs, cpu_count)
410 413
411 if jobs < 2: 414 if jobs < 2:
412 for bare_git in gitdirs.values(): 415 for bare_git in gc_gitdirs.values():
413 bare_git.gc('--auto') 416 bare_git.gc('--auto')
414 return 417 return
415 418
@@ -431,7 +434,7 @@ later is required to fix a server side protocol bug.
431 finally: 434 finally:
432 sem.release() 435 sem.release()
433 436
434 for bare_git in gitdirs.values(): 437 for bare_git in gc_gitdirs.values():
435 if err_event.isSet(): 438 if err_event.isSet():
436 break 439 break
437 sem.acquire() 440 sem.acquire()