diff -r 33b057778cd2 -r 8ad08dcab7d9 mercurial/subrepo.py --- 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