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

时间:2012-11-26 19:44:14

标签: git svn 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.

svn checkout https://my.site/svn/效果很好。

我重新跑了

cpan SVN::Core

并安装完成,但仍然收到错误。

4 个答案:

答案 0 :(得分:18)

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

如果您运行svn --version,则输出应包含以下内容:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme

* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme

问题是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只是使用无效的二进制文件。

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

    $ brew remove svn
    $ brew install --with-perl svn
    

    $ brew remove git
    $ brew install git
    

    或者使用类似的MacPorts:

    $ port install subversion-perlbindings
    

    $ port upgrade git-core +svn
    

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

    希望有所帮助。

答案 1 :(得分:1)

你能做到:git svn --version

请参阅此问题:How to upgrade the SVN version used by git-svn

<强>更新

请注意,此回答是对问题的海报原始版本的回复,其中的问题可能与在svn中使用旧版git-svn有关。海报已经升级了git,确定它不是原因,并调整了问题以反映这一点。

答案 2 :(得分:0)

这可能与SVN :: Core perl库或XCode命令行工具更新的不兼容性有关。

您可以尝试在本地升级它:

cpan SVN::Core

或全球:

sudo cpan SVN::Core

或者如果您正在使用brew,请尝试通过brew安装它:

brew install --perl subversion
brew reinstall git

如果仍然无效,请检查我们的PERL5LIB变量:

echo $PERL5LIB

如果它设置为您不想要的东西,您可以取消设置以进行测试:

unset PERL5LIB

如果有帮助,找到已定义的文件(例如〜/ .profile)并从那里删除。


如果您有多个perl库,则可以在~/.profile文件中指定PERL5LIB环境变量,例如

export PERL5LIB="/Users/my_user/perl5/lib/perl5:/Library/Perl/5.16:/Applications/Xcode.app/Contents/Developer/Library/Perl/5.16"

有时问题只是将PERL5LIB指向旧版本的perl库,例如: 5.12而不是5.16。

查找SVN :: Core所有实例的简便方法,您可以尝试:

sudo /usr/libexec/locate.updatedb # Only for the first time
locate Core.pm | grep Core.pm$

相关文章:

答案 3 :(得分:0)

将MacOS升级到Mojave后再次遇到此错误时,我想我也可以像以前通过brew reinstall git一样来解决问题,就像我对接受的答案发表评论一样。

但不幸的是我失败了。我搜索的其他任何信息都无法帮助我。因此,我通过截断安装工件来完全卸载git。

$ cd /usr/local
$ sudo rm -fr git
$ sudo rm -fr /usr/bin/git*

现在通过 brew 安装最新版本的git / git-svn:

$ brew install git
$ git --version
 git version 2.19.2
$ brew install git-svn

安装完成后,我输入项目的根目录并检查它是否可以工作:

$ cd <my project's root dir>
$ git svn rebase
 here output the repository updates

最终显示的git-svn pull信息向我展示,这意味着它再次起作用。

现在版本信息为:

$ git --version
 git-svn version 2.19.2 (svn 1.10.0)

之前是:

$ git svn --version
git-svn version 2.19.0 (svn 1.8.11)