git-svn dcommit失败,因为存储库名称包含空格

时间:2011-09-28 14:10:45

标签: git svn spaces dcommit

当尝试git 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不支持包含空格的目录。

2 个答案:

答案 0 :(得分:7)

通过修补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 
} 

对于windows(x64)用户,可以在Editor.pm文件中找到此函数,该文件位于

  

{Git安装文件夹} \ mingw64 \ share \ perl5 \ site_perl \ Git \ SVN \

这可确保正确编码url中的空格。

它似乎对我有用,但尚未经过彻底测试。

答案 1 :(得分:-1)

我认为空格的问题在Git> = 1.8.0中是固定的(参见:#786942)。

所以你应该考虑升级它。

请参阅GitHub主页:https://github.com/git/git