lstachowiak
lstachowiak

Reputation: 344

Mercurial error with subrepos on windows

I have critial problem with Mercurial configured with subrepos. When I try to commit or make update I get following error:

hg commit -m "commit" --traceback
Traceback (most recent call last):
File "mercurial\dispatch.pyc", line 87, in _runcatch
File "mercurial\dispatch.pyc", line 679, in _dispatch
File "mercurial\dispatch.pyc", line 454, in runcommand
File "mercurial\dispatch.pyc", line 733, in _runcommand
File "mercurial\dispatch.pyc", line 687, in checkargs
File "mercurial\dispatch.pyc", line 676, in <lambda>
File "mercurial\util.pyc", line 385, in check
File "mercurial\commands.pyc", line 1092, in commit
File "mercurial\cmdutil.pyc", line 1189, in commit
File "mercurial\commands.pyc", line 1087, in commitfunc
File "mercurial\localrepo.pyc", line 955, in commit
File "mercurial\subrepo.pyc", line 847, in dirty
File "mercurial\subrepo.pyc", line 783, in _gitisbare
File "mercurial\subrepo.pyc", line 717, in _gitcommand
File "mercurial\subrepo.pyc", line 721, in _gitdir
File "mercurial\subrepo.pyc", line 737, in _gitnodir
File "subprocess.pyc", line 623, in __init__
File "subprocess.pyc", line 833, in _execute_child
WindowsError: [Error 2] The system cannot find the file specified
abort: The system cannot find the file specified

My .hgsub:

webdriver/vendor/webdriver = [svn]http://php-webdriver-bindings.googlecode.com/svn/trunk/trunk/phpwebdriver/
app/vendor/bundles/Knp/Bundle/ZendCacheBundle = [git]http://github.com/knplabs/KnpZendCacheBundle.git
app/vendor/Zend/Cache = [git]http://github.com/knplabs/zend-cache.git
app/vendor/Zend/Filter = [git]http://github.com/knplabs/zend-filter.git

I use Windows XP and Mercurial 1.9.2. I have svn and git added to PATH and it works good. When I try to update my subrepos manually there is no problem, svn up and git pull works good.

Upvotes: 3

Views: 719

Answers (2)

Neil M
Neil M

Reputation: 666

If the Git for Windows (mysysgit) directory in your path is C:\Program Files (x86)\Git\cmd, try changing it to:

C:\Program Files (x86)\Git\bin

This will enable git to work with Mercurial.

Upvotes: 3

Rudi
Rudi

Reputation: 19940

To debug your path problem, you can use the following file

# qnddebug.py
import os
import sys
import subprocess

print os.environ['PATH']
print subprocess.call(['git', '--version'])
sys.exit(23)

and run it with hg --config extensions.foo=qnddebug.py. Then you see in the first line which path mercurial uses to find programs. The last line is error-code of the git call, and must be 0. Maybe there is the output of git --version in the line before the exit status, but this is a platform-specific detail.

Upvotes: 1

Related Questions