git-svn clone: ​​невозможно подключиться к хранилищу - PullRequest
0 голосов
/ 20 января 2019

Информация об окружающей среде

~$ 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, о котором идет речь.

1 Ответ

0 голосов
/ 23 января 2019

Как оказалось, этот «компьютер» (Debian под WSL) вообще не мог получить доступ к [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
...