##// END OF EJS Templates
subrepo: factor out Git version check to add doctests...
Siddharth Agarwal -
r20840:308344d8 default
parent child Browse files
Show More
@@ -1107,18 +1107,50 b' class gitsubrepo(abstractsubrepo):'
1107 raise
1107 raise
1108 self._gitexecutable = 'git.cmd'
1108 self._gitexecutable = 'git.cmd'
1109 out, err = self._gitnodir(['--version'])
1109 out, err = self._gitnodir(['--version'])
1110 versionstatus = self._checkversion(out)
1111 if versionstatus == 'unknown':
1112 self._ui.warn(_('cannot retrieve git version\n'))
1113 elif versionstatus == 'abort':
1114 raise util.Abort(_('git subrepo requires at least 1.6.0 or later'))
1115 elif versionstatus == 'warning':
1116 self._ui.warn(_('git subrepo requires at least 1.6.0 or later\n'))
1117
1118 @staticmethod
1119 def _checkversion(out):
1120 '''ensure git version is new enough
1121
1122 >>> _checkversion = gitsubrepo._checkversion
1123 >>> _checkversion('git version 1.6.0')
1124 'ok'
1125 >>> _checkversion('git version 1.8.5')
1126 'ok'
1127 >>> _checkversion('git version 1.4.0')
1128 'abort'
1129 >>> _checkversion('git version 1.5.0')
1130 'warning'
1131 >>> _checkversion('git version 1.9-rc0')
1132 'ok'
1133 >>> _checkversion('git version 1.9.0.265.g81cdec2')
1134 'ok'
1135 >>> _checkversion('git version 1.9.0.GIT')
1136 'ok'
1137 >>> _checkversion('git version 12345')
1138 'unknown'
1139 >>> _checkversion('no')
1140 'unknown'
1141 '''
1110 m = re.search(r'^git version (\d+)\.(\d+)', out)
1142 m = re.search(r'^git version (\d+)\.(\d+)', out)
1111 if not m:
1143 if not m:
1112 self._ui.warn(_('cannot retrieve git version\n'))
1144 return 'unknown'
1113 return
1114 version = (int(m.group(1)), int(m.group(2)))
1145 version = (int(m.group(1)), int(m.group(2)))
1115 # git 1.4.0 can't work at all, but 1.5.X can in at least some cases,
1146 # git 1.4.0 can't work at all, but 1.5.X can in at least some cases,
1116 # despite the docstring comment. For now, error on 1.4.0, warn on
1147 # despite the docstring comment. For now, error on 1.4.0, warn on
1117 # 1.5.0 but attempt to continue.
1148 # 1.5.0 but attempt to continue.
1118 if version < (1, 5):
1149 if version < (1, 5):
1119 raise util.Abort(_('git subrepo requires at least 1.6.0 or later'))
1150 return 'abort'
1120 elif version < (1, 6):
1151 elif version < (1, 6):
1121 self._ui.warn(_('git subrepo requires at least 1.6.0 or later\n'))
1152 return 'warning'
1153 return 'ok'
1122
1154
1123 def _gitcommand(self, commands, env=None, stream=False):
1155 def _gitcommand(self, commands, env=None, stream=False):
1124 return self._gitdir(commands, env=env, stream=stream)[0]
1156 return self._gitdir(commands, env=env, stream=stream)[0]
@@ -21,6 +21,7 b" testmod('mercurial.match')"
21 testmod('mercurial.minirst')
21 testmod('mercurial.minirst')
22 testmod('mercurial.revset')
22 testmod('mercurial.revset')
23 testmod('mercurial.store')
23 testmod('mercurial.store')
24 testmod('mercurial.subrepo')
24 testmod('mercurial.templatefilters')
25 testmod('mercurial.templatefilters')
25 testmod('mercurial.ui')
26 testmod('mercurial.ui')
26 testmod('mercurial.url')
27 testmod('mercurial.url')
General Comments 0
You need to be logged in to leave comments. Login now