mercurial/subrepo.py
branchstable
changeset 17025 8ad08dcab7d9
parent 17024 33b057778cd2
child 17027 6c05eebd9fab
child 17035 ba0286e149aa
--- a/mercurial/subrepo.py	Tue Jun 12 09:28:55 2012 -0400
+++ b/mercurial/subrepo.py	Tue Jun 12 09:31:04 2012 -0400
@@ -850,7 +850,14 @@
         self._ensuregit()
 
     def _ensuregit(self):
-        out, err = self._gitnodir(['--version'])
+        try:
+            self._gitexecutable = 'git'
+            out, err = self._gitnodir(['--version'])
+        except OSError, e:
+            if e.errno != 2 or os.name != 'nt':
+                raise
+            self._gitexecutable = 'git.cmd'
+            out, err = self._gitnodir(['--version'])
         m = re.search(r'^git version (\d+)\.(\d+)\.(\d+)', out)
         if not m:
             self._ui.warn(_('cannot retrieve git version'))
@@ -883,8 +890,8 @@
         errpipe = None
         if self._ui.quiet:
             errpipe = open(os.devnull, 'w')
-        p = subprocess.Popen(['git'] + commands, bufsize=-1, cwd=cwd, env=env,
-                             close_fds=util.closefds,
+        p = subprocess.Popen([self._gitexecutable] + commands, bufsize=-1,
+                             cwd=cwd, env=env, close_fds=util.closefds,
                              stdout=subprocess.PIPE, stderr=errpipe)
         if stream:
             return p.stdout, None