git svn - 无法识别的URL方案错误

Eug*_*ene 14 svn git git-svn

尝试使用git svn克隆svn rep时出现以下错误:

eugene$ git svn clone https://my.site/svn/ here
Initialized empty Git repository in /Users/eugene/Documents/workspace/test/here/.git/
Bad URL passed to RA layer: Unrecognized URL scheme for 'https://my.site/svn' at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 148.
Run Code Online (Sandbox Code Playgroud)

svn checkout https://my.site/svn/ 工作得很好.

我重新跑了

cpan SVN::Core
Run Code Online (Sandbox Code Playgroud)

并安装完成,但仍然得到错误.

vad*_*hev 18

显然,您有两个不同版本的Subversion二进制文件,其中一个版本不支持http(s)://协议.

如果你运行svn --version输出应该包括这样的东西:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
Run Code Online (Sandbox Code Playgroud)

要么

* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme
Run Code Online (Sandbox Code Playgroud)

问题是git-svn不使用相同的二进制文件.相反,它使用另一个版本的SVN,编译时不支持http(s)://协议.可能有不同的原因:

  1. 如果svn --version -q打印1.7.x,很可能你的Git安装太旧了,不能使用这个版本的SVN.因此,您可能希望将其升级为git-svn支持SVN 1.7的最新版本.

  2. 如果您的默认SVN安装没有安装Perl绑定,则SVN :: Core使用没有http(s)支持的二进制文件作为后备.因此,您可能希望为SVN启用Perl绑定.

  3. 最后,由于Perl模块的一些配置错误,PATH/LD_LIBRARY_PATH或PERL5LIB(或者git-svn用于查找库的任何用途 - 我不是这里的专家),git-svn只使用无效的二进制文件.

解决问题的具体步骤取决于您如何管理软件包,例如Homebrew看起来像这样:

$ brew remove svn
$ brew install --with-perl svn
Run Code Online (Sandbox Code Playgroud)

要么

$ brew remove git
$ brew install git
Run Code Online (Sandbox Code Playgroud)

或者使用MacPorts这样的东西:

$ port install subversion-perlbindings
Run Code Online (Sandbox Code Playgroud)

要么

$ port upgrade git-core +svn
Run Code Online (Sandbox Code Playgroud)

之后尝试指定正确的库路径.例如,如果which svn打印/usr/local/bin/svn,请尝试/usr/local/lib用作Perl模块的库路径.

希望有所帮助.