尝试使用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
并安装完成,但仍然收到错误。
答案 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)://协议。可能有不同的原因:
如果svn --version -q
打印1.7.x
,则很可能您的Git安装太旧而无法使用此版本的SVN。因此,您可能希望升级它,因为git-svn
的最新版本支持SVN 1.7。
如果您的默认SVN安装没有安装Perl绑定,则SVN :: Core使用没有http(s)支持的二进制文件作为后备。因此,您可能希望为SVN启用Perl绑定。
最后,由于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 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)