2014-01-09 29 views
0

我正在使用Cygwin。我認爲混帳會使用它找到的路徑上的第一個SVN客戶端,但似乎並沒有這樣的情況:如何告訴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

回答

1

git-svn不使用命令行客戶端,而是直接使用Perl SWIG綁定來使用Subversion API。

錯誤消息是調用該庫的斷言,並提供了正在生成斷言的源文件和行的路徑。所以這個路徑與正在使用的svn客戶端無關。

無論是Subversion本身存在一個bug還是Git使用中的一個錯誤導致斷言,因爲路徑沒有被恰當地簡化。我可能會先向Git人員報告問題(因爲這是我的賭注,哪裏出現規範化錯誤)。

+0

我想他們已經知道了。你可以從這裏看到:http://stackoverflow.com/questions/17693255/git-svn-dcommit-fails-because-of-assertion-error-svn-fspath-is-canonicalchild?rq=1 –

+0

即使你的答案被標記爲accpeted它實際上並沒有回答這個問題。而問題是如何強制Git使用特定版本。 在我使用Linux的時候,我在'source'(在Bash中)SVN 1.8.5'git-svn'(v 1.7.10.1)在克隆(一個已知的不兼容問題)時失敗。而源'SVN 1.7.9導致成功的'git-svn'克隆。 那麼我如何強制'git-svn'使用SVN 1.7.9而不是1.8.5而1.8.5'source'ed? –

+1

@Adam它回答了問題,這是你不能告訴它使用特定的客戶端。你所問的是一個相關但不同的問題。我如何讓git-svn使用不同版本的Subversion綁定。答案是設置PERL5LIB和PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH,以便找到所需的Perl庫/ Subversion綁定版本。如果你想提出一個單獨的問題,並提供你的環境的細節,我可以更全面地回答。 –

相關問題