sync: Only parallelize gc for git >= 1.7.2

This minimum version is required for the -c argument to set config on
the command line. Without this option, git by default uses as many
threads per invocation as there are CPUs, so we cannot safely
parallelize without hosing a system.

Change-Id: I8fd313dd84917658162b5134b2d9aa34a96f2772
This commit is contained in:
Dave Borowitz 2012-10-31 12:24:38 -07:00
parent 1d947b3034
commit e21526754b

View File

@ -44,7 +44,7 @@ try:
except ImportError: except ImportError:
multiprocessing = None multiprocessing = None
from git_command import GIT from git_command import GIT, git_require
from git_refs import R_HEADS, HEAD from git_refs import R_HEADS, HEAD
from main import WrapperModule from main import WrapperModule
from project import Project from project import Project
@ -310,7 +310,8 @@ later is required to fix a server side protocol bug.
return fetched return fetched
def _GCProjects(self, projects): def _GCProjects(self, projects):
if multiprocessing: has_dash_c = git_require((1, 7, 2))
if multiprocessing and has_dash_c:
cpu_count = multiprocessing.cpu_count() cpu_count = multiprocessing.cpu_count()
else: else:
cpu_count = 1 cpu_count = 1