我正在使用OSX,并希望使用sourcetree
获取svn repo到本地git仓库。
当我使用SVN URL使用sourcetree添加书签时,sourcetree
知道它是SVN网址,但是当我点击克隆按钮时,它会报告如下错误:
Can't locate SVN/Core.pm in @INC (@INC contains: /usr/local/git/lib/perl5/site_perl /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/Git/SVN/Editor.pm line 5.
BEGIN failed--compilation aborted at /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/Git/SVN/Editor.pm line 5.
Compilation failed in require at /Applications/SourceTree.app/Contents/Resources/git_local/libexec/git-core/git-svn line 81.
BEGIN failed--compilation aborted at /Applications/SourceTree.app/Contents/Resources/git_local/libexec/git-core/git-svn line 81.
我不知道如何通过。任何人都可以给我一个如何做到这一点的指针?
我最近用el capitan打了这个丢失的SVN / Core.pm问题。
修复我使用的是来自Paul Schreiber's blog:
sudo mkdir /Library/Perl/5.18/auto
sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /Library/Perl/5.18/darwin-thread-multi-2level
sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /Library/Perl/5.18/auto/
下面的评论者说,这也适用于山脉和高山脉。
或者,如果你没有Xcode
,只需CommandLineTools
(这是在ElCapitan 10.11.6
):
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/auto/SVN
如果您以前链接过一些旧版本或者只是犯了一个错误,那么它会给你:File exists
,那么你应该先做
sudo unlink /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
当然,对于已报告的已存在的文件。
编辑目录不存在:(由@rogeriopradoj建议)
mkdir -p /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level
EDIT Sierra:
升级到Sierra之后我丢失了CommandLineTools
,所以我只需要重新安装它,一切都恢复正常。
这将提示您只安装CommandLineTools
,而不是整个XCode
。
xcode-select --install
希望这有助于某人:)
就我而言,这是因为brew安装了不同版本的perl作为某些公式的依赖项,并覆盖了系统的默认版本。
因此,我的解决方案是如下所述减轻被覆盖的。
当键入which perl
和perl -v
时,我发现它不是系统默认版本:
# locate programs
faner@MBP-FAN:~|⇒ whereis perl
/usr/bin/perl
# locate a program file in the user's path
faner@MBP-FAN:~|⇒ which perl
/usr/local/bin/perl
faner@MBP-FAN:~|⇒ perl -v
This is perl 5, version 26, subversion 1 (v5.26.1) built for darwin-thread-multi-2level
根据git svn
错误消息,它应该是v5.18.2。
我想这是因为brew安装了不同版本的perl作为某些公式的依赖项,并覆盖系统默认版本。
faner@MBP-FAN:~|⇒ brew uses perl --installed
subversion
为了证明这一点,尝试在$ PATH中的/usr/bin
之前移动/usr/local/bin
,然后perl回退到系统的默认版本:
faner@MBP-FAN:~|⇒ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
faner@MBP-FAN:~|⇒ PATH=/usr/bin:$PATH
faner@MBP-FAN:~|⇒ echo $PATH
/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
faner@MBP-FAN:~|⇒ whereis perl
/usr/bin/perl
faner@MBP-FAN:~|⇒ which perl
/usr/bin/perl
faner@MBP-FAN:~|⇒ perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)
和perl -V
列出@INC只是满足Can't locate SVN/Core.pm in @INC
要求:
faner@MBP-FAN:~|⇒ perl -V
Summary of my perl5 (revision 5 version 18 subversion 2) configuration:
@INC:
/Library/Perl/5.18/darwin-thread-multi-2level
/Library/Perl/5.18
/Network/Library/Perl/5.18/darwin-thread-multi-2level
/Network/Library/Perl/5.18
/Library/Perl/Updates/5.18.2
/System/Library/Perl/5.18/darwin-thread-multi-2level
/System/Library/Perl/5.18
/System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.18
键入git svn
,一切正常!
faner@MBP-FAN:~|⇒ git svn --version
git-svn version 2.15.1 (Apple Git-101) (svn 1.9.7)
加上最高的答案,如果您使用的是souceTree,只需粘贴命令行可能无法立即生效。在这种情况下,您可能需要检查sourceTree中使用的git,它应该设置为System git。
感谢Marko,我确实发现在ElCapitan 10.11.3上我不得不将符号链接到另一个区域。不知道为什么,但它确实有效。
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/auto/SVN
我在Macos Mojave 10.14.1上遇到了同样的问题。因为我使用了内置版本的git,而且它太低了(2.19.0)。我通过升级git修复它到最新版本(2.21.0),我发现2.19.1也没有这个问题。
我的解决方案是删除OSX密钥环应用程序中的密码条目,并让git svn重新创建它。我的密钥条目已经创建(我假设是svn),并且似乎git不能使用此密钥条目(也不能修复它,也不能添加第二个条目)。
长话故事:我注意到在SourceTree中取消“system git”时,存储凭据似乎存在问题。当我在命令行输入相同的git命令(SourceTree正在发出)时,git每次都会提示我输入密码。
然后我找到了https://stackoverflow.com/a/39800112/580672
如果您有兴趣,我的设置是:
我试过没有成功:
一切都没有成功。解决方案是系统git和密钥输入,如上所述。
我发现最好的解决方案是使用导出扩展@INC
中的目录列表
export PERL5LIB=/Applications/Xcode.app/Contents/Developer/Library/Perl/5.18
参考自:https://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations