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

wsh*_*cdr 16 macos git-svn

我正在使用OSX,并希望使用svn repo进入本地git仓库sourcetree.

当我使用SVN URL使用sourcetree添加书签时,因此sourcetree知道它是SVN URL,但是当我单击克隆按钮时,它会报告如下错误:

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.
Run Code Online (Sandbox Code Playgroud)

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

k1e*_*ran 42

我知道这是一个老问题,但我最近遇到了丢失的SVN/Core.pm问题__CODE__.评论者,见下文,说它也有效__CODE__.

我使用的修复来自......

https://paulschreiber.com/blog/2015/11/09/fixing-git-svn-on-os-x-el-capitan/comment-page-1/#comment-437843

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/
Run Code Online (Sandbox Code Playgroud)

  • 也适用于MacOS Sierra! (3认同)
  • 谢谢你为我修好了. (2认同)
  • 这适用于使用 Xcode 9.4.1 的 High Sierra (10.13.6),但我不得不重新输入并使用自动完成功能,因为复制粘贴命令会生成无效字符。 (2认同)

Mar*_*aci 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
Run Code Online (Sandbox Code Playgroud)

如果您以前链接过某些旧版本或者只是犯了一个错误,那么它会给您:File exists,那么您应该先做

sudo unlink /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
Run Code Online (Sandbox Code Playgroud)

当然,对于已报告的已存在的文件.

编辑目录不存在:(由@rogeriopradoj建议)

mkdir -p /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level
Run Code Online (Sandbox Code Playgroud)

EDIT Sierra:
升级到Sierra之后我输了CommandLineTools,所以我只需要重新安装它,一切都恢复正常.
这将提示您安装CommandLineTools,而不是整个XCode.

xcode-select --install

希望这有助于某人:)


fan*_*an2 5

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

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


当输入which perland 时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
Run Code Online (Sandbox Code Playgroud)

根据错误消息应该是v5.18.2git svn

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

faner@MBP-FAN:~|?  brew uses perl --installed
subversion
Run Code Online (Sandbox Code Playgroud)

为了证明这一点,尝试在 $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)
Run Code Online (Sandbox Code Playgroud)

perl -V列出刚刚满足Can't locate SVN/Core.pm in @INC要求的@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
Run Code Online (Sandbox Code Playgroud)

键入git svn,一切正常!

faner@MBP-FAN:~|?  git svn --version
git-svn version 2.15.1 (Apple Git-101) (svn 1.9.7)
Run Code Online (Sandbox Code Playgroud)