Comments
Patch
@@ -1130,16 +1130,24 @@ class gitsubrepo(abstractsubrepo):
if versionstatus == 'unknown':
self._ui.warn(_('cannot retrieve git version\n'))
elif versionstatus == 'abort':
raise util.Abort(_('git subrepo requires at least 1.6.0 or later'))
elif versionstatus == 'warning':
self._ui.warn(_('git subrepo requires at least 1.6.0 or later\n'))
@staticmethod
+ def _gitversion(out):
+ m = re.search(r'^git version (\d+)\.(\d+)', out)
+ if m:
+ return (int(m.group(1)), int(m.group(2)))
+
+ return -1
+
+ @staticmethod
def _checkversion(out):
'''ensure git version is new enough
>>> _checkversion = gitsubrepo._checkversion
>>> _checkversion('git version 1.6.0')
'ok'
>>> _checkversion('git version 1.8.5')
'ok'
@@ -1153,23 +1161,22 @@ class gitsubrepo(abstractsubrepo):
'ok'
>>> _checkversion('git version 1.9.0.GIT')
'ok'
>>> _checkversion('git version 12345')
'unknown'
>>> _checkversion('no')
'unknown'
'''
- m = re.search(r'^git version (\d+)\.(\d+)', out)
- if not m:
- return 'unknown'
- version = (int(m.group(1)), int(m.group(2)))
+ version = gitsubrepo._gitversion(out)
# git 1.4.0 can't work at all, but 1.5.X can in at least some cases,
# despite the docstring comment. For now, error on 1.4.0, warn on
# 1.5.0 but attempt to continue.
+ if version == -1:
+ return 'unknown'
if version < (1, 5):
return 'abort'
elif version < (1, 6):
return 'warning'
return 'ok'
def _gitcommand(self, commands, env=None, stream=False):
return self._gitdir(commands, env=env, stream=stream)[0]