如何告诉Git使用特定的Svn客户端



我正在使用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

git-svn不使用命令行客户端,而是使用Perl-SWIG绑定来直接使用Subversion API。

错误消息是调用该库的断言,它提供了生成断言的源文件和行的路径。因此,该路径与正在使用的svn客户端无关。

要么是Subversion本身有一个bug,要么是Git使用中的一个bug导致了断言,因为路径没有正确地命名。我可能会从向Git人员报告这个问题开始(因为这是我对规范化错误的判断)。

最新更新