git-svn clone:无法连接到仓库

42fyovps  于 2023-11-15  发布在  Git
关注(0)|答案(3)|浏览(166)

环境信息

~$ 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 checkout 按预期工作。我已经尝试使用svn://协议,但它不能将[server]识别为已知主机名。
如果我将clone分为initfetch,则fetch步骤失败。
我应该补充的是,像SmartGit这样的解决方案对我来说不是一个选择;我在一家拥有超过1000名开发人员的公司工作,所以支持一个开发人员的成本将是天文数字。
SVN.pm:148读取my $ra = Git::SVN::Ra->new($url);-在我的研究中的其他地方(我再也找不到这篇文章了),我相信这是一个SVN函数的 Package 器。下面是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

7uzetpgm

7uzetpgm1#

结果,这台机器(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

piv4azn7

piv4azn72#

对我来说,把http前缀改为svn并使用ip地址是解决方案,而不是:

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

字符串
我用了:

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

b0zn9rqh

b0zn9rqh3#

当涉及到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

字符串

相关问题