14

尝试使用 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

4 回答 4

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 -qprints 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

或者

$ brew remove git
$ brew install git

或者使用 MacPorts 是这样的:

$ port install subversion-perlbindings

或者

$ port upgrade git-core +svn

之后尝试指定正确的库路径。例如,如果which svnprints /usr/local/bin/svn,尝试将/usr/local/lib其用作 Perl 模块的库路径。

希望有帮助。

于 2012-12-13T17:23:50.207 回答
1

你可以做:git svn --version

看到这个问题:如何升级git-svn使用的SVN版本

更新

请注意,此答案是针对问题的发布者原始版本,其中问题可能与使用 in 的旧版本svn有关git-svn。此后,发布者升级了 git,确定这不是原因,并调整了问题以反映这一点。

于 2012-11-26T19:51:03.143 回答
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$

相关文章:

于 2013-11-26T16:42:54.543 回答
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)
于 2018-12-01T12:00:28.577 回答