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

Sea*_*red 7 svn git git-svn git-clone

环境信息

\n\n
~$ git --version\ngit version 2.11.0\n~$ git svn --version\ngit-svn version 2.11.0 (svn 1.9.5)\n~$ svn --version\nsvn, version 1.9.5 (r1770682)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在尝试克隆内部托管的 SVN 存储库,但遇到以下错误:

\n\n
~$ git svn clone http://[server]/svn/dev1\nInitialized empty Git repository in [~]/test/[root]/.git/\nCan\'t create session: Unable to connect to a repository at URL \\\n  \'http://[server]/svn/[root]\' at /usr/share/perl5/Git/SVN.pm line 148.\n
Run Code Online (Sandbox Code Playgroud)\n\n

SVN 结账按预期工作。我尝试过使用该svn://协议,但它无法识别[server]为已知的主机名。

\n\n

如果我分成cloneinitfetch则这fetch一步失败。

\n\n

我应该补充一点,遗憾的是,像 SmartGit 这样的解决方案不适合我;我在一家拥有超过 1000 名开发人员的公司工作,因此支持一名开发人员的成本将是天文数字。

\n\n
\n\n

SVN.pm:148从我研究的其他地方读取my $ra = Git::SVN::Ra->new($url);\xe2\x80\x93 (我再也找不到这篇文章了),我相信这是 SVN 函数的包装。这是 的定义Ra->new

\n\n
~$ git --version\ngit version 2.11.0\n~$ git svn --version\ngit-svn version 2.11.0 (svn 1.9.5)\n~$ svn --version\nsvn, version 1.9.5 (r1770682)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不了解 Perl,所以这就是我能自己做的 \xe2\x80\x93 我找不到这个SVN::Ra->new提到的内容。

\n

Sea*_*red 3

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

完全符合[server].[company].com我的要求。代替

git svn clone http://[server]/svn/dev1
Run Code Online (Sandbox Code Playgroud)

我用了

git svn clone http://[server].[company].com/svn/dev1
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个错误,而是一个功能:出于显而易见的原因,Debian Buster 不再支持 TLS <= 1.1。当服务器不支持至少 TLS 1.2 时,您最终会遇到与上面提到的相同的问题(无论您直接使用 git-svn 还是 svn)。一个可能的解决方法是降低“/etc/ssl/openssl.cnf”(“MinProtocol = TLSv1.0”)中的要求,但正确的解决方法当然是更新服务器。 (2认同)