我正在使用Cygwin。我假设git会使用它在路径上找到的第一个svn客户端,但情况似乎并非如此:
$ type svn
svn is /cygdrive/c/Program Files/SlikSvn/bin/svn
$ echo $PATH | sed 's/:/\n/g'
/cygdrive/c/Program Files/SlikSvn/bin
/bin
/home/me/bin
/home/me/bin
/usr/local/bin
/usr/bin
/cygdrive/c/Program Files (x86)/Haskell/bin
/cygdrive/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin
/cygdrive/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin
/cygdrive/c/Windows/system32
/cygdrive/c/Windows
/cygdrive/c/Windows/System32/Wbem
/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0
/cygdrive/c/Program Files/TortoiseSVN/bin
/cygdrive/c/Program Files/Java/jdk1.6.0_34/bin
/cygdrive/c/apache-maven-3.0.4/bin
/cygdrive/c/apache-ant-1.8.0/bin
/cygdrive/c/Program Files (x86)/Haskell Platform/2012.4.0.0/mingw/bin
/cygdrive/c/cygwin/bin
/cygdrive/c/Program Files (x86)/QuickTime/QTSystem
/cygdrive/c/Program Files/nodejs
/cygdrive/c/Program Files (x86)/phantomjs-1.9.1-windows
/cygdrive/c/Program Files/SlikSvn/bin
$ git svn dcommit
Committing to https://svn.corp.corp.com/svn/results/trunk ...
R foo => bar
assertion "svn_fspath__is_canonical(child_fspath)" failed: file "/usr/src/subversion/subversion-1.8.5-1/src/subversion-1.8.5/subversion/libsvn_subr/dirent_uri.c", line 2504, function: svn_fspath__skip_ancestor
error: git-svn died of signal 6
我不认为它使用第一个路径的原因是因为错误提到/usr/src/subversion/subversion-1.8.5-1/src/subversion-1.8.5/subversion/libsvn_subr/dirent_uri.c
而我路径上的第一个是/cygdrive/c/Program Files/SlikSvn/bin
。
答案 0 :(得分:1)
git-svn不使用命令行客户端,而是使用Perl SWIG绑定直接使用Subversion API。
错误消息是来自调用该库的断言,并且正在提供源文件的路径以及生成断言的行。因此该路径与正在使用的svn客户端无关。
要么Subversion本身存在错误,要么Git使用中的错误导致断言,因为路径没有正确地进行caononical。我可能首先向Git人员报告这个问题(因为这是我对标准化错误发生位置的赌注)。