3

サブリポジトリで構成された Mercurial に重大な問題があります。コミットまたは更新しようとすると、次のエラーが発生します。

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

私の .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

Windows XP と Mercurial 1.9.2 を使用しています。私は svn と git を PATH に追加しましたが、うまくいきました。サブリポジトリを手動で更新しようとしても問題はありません。svn up と git pull はうまく機能します。

4

2 に答える 2

3

パスのGit for Windows (mysysgit)ディレクトリが の場合はC:\Program Files (x86)\Git\cmd、次のように変更してみてください。

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

これにより、git が Mercurial と連携できるようになります。

于 2012-01-26T10:21:01.797 に答える
1

パスの問題をデバッグするには、次のファイルを使用できます

# qnddebug.py
import os
import sys
import subprocess

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

で実行しhg --config extensions.foo=qnddebug.pyます。次に、最初の行に、mercurialがプログラムを見つけるために使用するパスが表示されます。最後の行はgit呼び出しのエラーコードであり、0である必要がありますgit --version。終了ステータスの前の行にの出力がある可能性がありますが、これはプラットフォーム固有の詳細です。

于 2011-11-25T12:21:36.117 に答える