git-svn clone:无法连接到存储库

时间:2019-01-20 14:50:40

标签: git svn git-svn git-clone

环境信息

~$ 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分为initfetch,则是fetch步骤失败了。

我应该补充说,对我来说,像SmartGit这样的解决方案不是可选项;我在拥有超过1000名开发人员的公司工作,因此支持一名开发人员的成本将是天文数字。


SVN.pm:148从研究的其他地方读取my $ra = Git::SVN::Ra->new($url);(我找不到该帖子了),我相信这是SVN函数的包装。这是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 个答案:

答案 0 :(得分:1)

事实证明,此“计算机”(WSL下的Debian)根本无法访问[server](即使Windows可以访问)。给出的错误消息可能不是很具体,但是仍然很准确:git-svn无法到达给定URL的存储库,因为它根本无法访问URL!

完全符合[server].[company].com的条件对我有用。代替

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

我用过

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