代码之家  ›  专栏  ›  技术社区  ›  Sean Allred

Git SVN克隆:无法连接到存储库

  •  1
  • Sean Allred  · 技术社区  · 6 年前

    环境信息

    ~$ git --version
    git version 2.11.0
    ~$ git svn --version
    git-svn version 2.11.0 (svn 1.9.5)
    ~$ svn --version
    svn, version 1.9.5 (r1770682)
    

    我正在尝试克隆内部托管的SVN存储库,但遇到以下错误:

    ~$ git svn clone http://[server]/svn/dev1
    Initialized empty Git repository in [~]/test/[root]/.git/
    Can't create session: Unable to connect to a repository at URL \
      'http://[server]/svn/[root]' at /usr/share/perl5/Git/SVN.pm line 148.
    

    SVN签出按预期工作。我试过用 svn:// 协议,但它不识别 [server] 作为已知主机名。

    如果我分开 clone 进入之内 init fetch 这是 取来 失败的步骤。

    我应该补充一点,像smartgit这样的解决方案对我来说不是一个选择;我在一家有1000个devs的公司工作,因此支持一个开发人员的成本是巨大的。


    SVN.pm:148 读数 my $ra = Git::SVN::Ra->new($url); _以下是对 Ra->new :

    sub new {
            my ($class, $url) = @_;
            $url = canonicalize_url($url);
            return $RA if ($RA && $RA->url eq $url);
    
            ::_req_svn();
    
            $RA = undef;
            my ($config, $baton, $callbacks) = prepare_config_once();
            my $self = SVN::Ra->new(url => $url, auth => $baton,
                                  config => $config,
                                  pool => SVN::Pool->new,
                                  auth_provider_callbacks => $callbacks);
            $RA = bless $self, $class;
    
            # Make sure its canonicalized
            $self->url($url);
            $self->{svn_path} = $url;
            $self->{repos_root} = $self->get_repos_root;
            $self->{svn_path} =~ s#^\Q$self->{repos_root}\E(/|$)##;
            $self->{cache} = { check_path => { r => 0, data => {} },
                               get_dir => { r => 0, data => {} } };
    
            return $RA;
    }
    

    我不知道Perl,所以这是我自己能做的,我找不到 SVN::Ra->new 这就提到了。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sean Allred    6 年前

    事实证明,这台“机器”(WSL下的Debian)无法访问 [server] 不管怎样(即使窗户可以)。给出的错误消息可能不是很具体,但它仍然是准确的:Git SVN无法到达给定URL的存储库,因为它根本无法到达该URL!

    完全符合条件 [server].[company].com 为我工作。而不是

    git svn clone http://[server]/svn/dev1
    

    我用过

    git svn clone http://[server].[company].com/svn/dev1