diff options
Diffstat (limited to 'subcmds')
-rw-r--r-- | subcmds/sync.py | 11 |
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() |