git-svn 克隆:无法连接到存储库
git-svn clone: unable to connect to a repository
环境信息
~$ 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);
– 来自我研究的其他地方(我再也找不到 post),我相信这是一个 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
提到的内容。
事实证明,这个 'machine'(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
将 http 前缀更改为 svn 并使用 ip 地址是我的解决方案。而不是:
git svn clone http://[server]/svn/dev1
我用过:
git svn clone svn://[ip adress]/svn/dev1
环境信息
~$ 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);
– 来自我研究的其他地方(我再也找不到 post),我相信这是一个 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
提到的内容。
事实证明,这个 'machine'(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
将 http 前缀更改为 svn 并使用 ip 地址是我的解决方案。而不是:
git svn clone http://[server]/svn/dev1
我用过:
git svn clone svn://[ip adress]/svn/dev1