在OSX上使用sourcetree / git-svn获取“无法在@INC中找到SVN / Core.pm”

问题描述 投票:16回答:8

我正在使用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.

我不知道如何通过。任何人都可以给我一个如何做到这一点的指针?

macos git-svn
8个回答
41
投票

我最近用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/

下面的评论者说,这也适用于山脉和高山脉。


9
投票

或者,如果你没有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

希望这有助于某人:)


2
投票

就我而言,这是因为brew安装了不同版本的perl作为某些公式的依赖项,并覆盖了系统的默认版本。

因此,我的解决方案是如下所述减轻被覆盖的。


当键入which perlperl -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)

1
投票

加上最高的答案,如果您使用的是souceTree,只需粘贴命令行可能无法立即生效。在这种情况下,您可能需要检查sourceTree中使用的git,它应该设置为System git。


0
投票

感谢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/li‌​b/perl5/site_perl/5.‌​18.2/darwin-thread-m‌​ulti-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/li‌​b/perl5/site_perl/5.‌​18.2/darwin-thread-m‌​ulti-2level/auto/SVN

0
投票

我在Macos Mojave 10.14.1上遇到了同样的问题。因为我使用了内置版本的git,而且它太低了(2.19.0)。我通过升级git修复它到最新版本(2.21.0),我发现2.19.1也没有这个问题。


0
投票

我的解决方案是删除OSX密钥环应用程序中的密码条目,并让git svn重新创建它。我的密钥条目已经创建(我假设是svn),并且似乎git不能使用此密钥条目(也不能修复它,也不能添加第二个条目)。

长话故事:我注意到在SourceTree中取消“system git”时,存储凭据似乎存在问题。当我在命令行输入相同的git命令(SourceTree正在发出)时,git每次都会提示我输入密码。

然后我找到了https://stackoverflow.com/a/39800112/580672

如果您有兴趣,我的设置是:

我试过没有成功:

  • “嵌入式git”(产生@INC错误)
  • “system git”(不同的错误:“用户名:使用未初始化的值$ ret in chomp at /usr/local/Cellar/git/2.21.0/share/perl5/Git.pm line 596.”)
  • 如上所述,将usr / bin放在我的PATH前面
  • 在自制软件中强制卸载perl

一切都没有成功。解决方案是系统git和密钥输入,如上所述。


0
投票

我发现最好的解决方案是使用导出扩展@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

© www.soinside.com 2019 - 2024. All rights reserved.