2011-09-28 113 views
3

當attemping到git svn dcommit到有空間在它的名字一個倉庫,我得到以下錯誤:混帳svn的dcommit失敗

Committing to http://svn.kuluvalley.com/Meet the Expert/trunk ... 
http://svn.kuluvalley.com/Meet the Expert/trunk 
Filesystem has no item: '/!svn/bc/7397/Meet' path not found at /usr/libexec/git-core/git svn line 592 

它看起來像git svn不支持帶有空格的目錄。

+0

的可能的複製[混帳svn的克隆失敗「致命的:不是有效的對象名稱」(http://stackoverflow.com/questions/11365317/git-svn-clone -fails-fatal-not-a-valid-object-name) – kenorb

回答

4

我能夠通過修補git-svn來解決git svn無法在其中有空格的存儲庫的問題。

我的url_path函數更新爲:

sub url_path { 
    my ($self, $path) = @_; 

    my $url = $self->{url} . '/' . $self->repo_path($path); 
    if ($self->{url} =~ m#^https?://#) { 
    $url =~ s!([^~a-zA-Z0-9_./-])!uc sprintf("%%%02x",ord($1))!eg; 
    $url =~ s!^(https?)%3A//!$1://!; 
    } 
    $url 
} 

對於窗口(64)的用戶,這個功能可在Editor.pm文件,該文件位於

{Git installation folder}\mingw64\share\perl5\site_perl\Git\SVN\

這確保了可以找到url中的空格編碼正確。

它似乎爲我工作,但尚未經過徹底測試。