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

问题描述 投票:0回答:3

环境信息

~$ 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
,则
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

git svn git-svn git-clone
3个回答
2
投票

事实证明,这台“机器”(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

0
投票

将 http 前缀更改为 svn 并使用 ip 地址是我的解决方案。而不是:

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

我用过:

git svn clone svn://[ip adress]/svn/dev1

0
投票

当涉及到

https://your.svn.server/repo
并且错误指示类似
 SSL communication at /usr/share/perl5/Git/SVN.pm line #number#
时,您应该如下配置
/etc/ssl/openssl.cnf

在任何块之外的文件第一行中:

openssl_conf = default_conf

在文件末尾或任何地方:

    [default_conf] 
ssl_conf = ssl_sect
    [ssl_sect] 
system_default = system_default_sect
    [system_default_sect]
    #MinProtocol = TLSv1.2 
CipherString = DEFAULT@SECLEVEL=1
© www.soinside.com 2019 - 2024. All rights reserved.