19

我正在使用 OSX 并希望使用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.

我不知道如何通过它。谁能给我一个关于如何做到这一点的指针?

4

10 回答 10

44

SVN/Core.pm我最近用el capitain解决了这个缺失的问题。

我使用的修复来自Paul Schreiber 的博客

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/


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

于 2016-03-07T11:47:57.907 回答
10

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

编辑 Sierra:
升级到 Sierra 后我丢失了CommandLineTools,所以我只需要重新安装它,一切就恢复正常了。
这将提示您只安装CommandLineTools,而不是整个XCode.

xcode-select --install

希望这可以帮助某人:)

于 2016-11-01T15:08:20.743 回答
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

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

我猜这是因为 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列出满足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

键入git svn,一切正常!

faner@MBP-FAN:~|⇒  git svn --version
git-svn version 2.15.1 (Apple Git-101) (svn 1.9.7)
于 2018-04-06T02:16:32.857 回答
2

通过将第一行更改为来设法解决相同的/usr/local/Cellar/git/2.29.2/libexec/git-core/git-svn 问题 #!/usr/local/bin/perl

于 2020-11-05T00:30:39.513 回答
1

再加上最高的答案,如果您使用的是 souceTree,简单地粘贴命令行可能不会立即起作用。在这种情况下,您可能需要检查 sourceTree 中使用的 git,它应该设置为 System git。

于 2019-01-15T03:06:42.457 回答
1

Xcode 11.4 不再在其 Perl 绑定中包含 SVN/Core.pm!

如果您从未安装过命令行工具并且 Xcode 11.4 是您运行的第一个版本,您将看到此问题。运行xcode-select --install返回错误:命令行工具已安装,使用“软件更新”来安装更新,这是准确的,但不明显的是,您安装的命令行工具与安装在 Xcode 11.4 之外的命令行工具不同。解决方案是首先删除这些,然后使用xcode-select.

sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
于 2020-04-02T15:20:25.903 回答
0

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

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

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

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

我试过没有成功:

  • “嵌入式 git”(产生 @INC 错误)
  • “系统 git”(不同的错误:“用户名:在 /usr/local/Cellar/git/2.21.0/share/perl5/Git.pm 第 596 行的 chomp 中使用未初始化的值 $ret。”)
  • 按照上面的建议将 usr/bin 放在我的 PATH 前面
  • 在自制软件中强制卸载 perl

都没有成功。如上所述,解决方案是系统 git 和密钥条目。

于 2019-04-16T10:34:50.233 回答
0

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

于 2019-04-16T03:48:38.097 回答
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

于 2019-06-20T11:33:11.563 回答
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
于 2017-04-05T23:34:02.707 回答