有人在 M1 CPU Mac 上成功运行 git-svn 吗?

时间:2021-03-08 04:00:58

标签: git macos svn git-svn apple-m1

我已经尝试了很多关于 Homebrew 问题的方法。总是无法运行 git-svn

<块引用>
Can't locate SVN/Core.pm in @INC (you may need to install the
SVN::Core module) (@INC contains:
/opt/homebrew/Cellar/git/2.30.1/share/perl5
/Applications/Xcode.app/Contents/Developer/Library/Perl/5.28/darwin-thread-multi-2level
/Library/Developer/CommandLineTools/Library/Perl/5.28/darwin-thread-multi-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0/darwin-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0/darwin-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0) at
/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at
/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN/Utils.pm line 6.
Compilation failed in require at
/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN.pm line 25. BEGIN
failed--compilation aborted at
/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN.pm line 32.
Compilation failed in require at
/opt/homebrew/Cellar/git/2.30.1/libexec/git-core/git-svn line 23.
BEGIN failed--compilation aborted at
/opt/homebrew/Cellar/git/2.30.1/libexec/git-core/git-svn line 23.

Git-SVN 不支持 M1 Mac?

2 个答案:

答案 0 :(得分:0)

M1 不太可能与这个问题有关。

git-svn 是用 Perl 编写的,解释器本身似乎工作正常。它确实产生了回溯;如果根本无法运行,错误会有所不同(由于您使用的特殊机器或其他原因)。

如果你能仔细阅读输出,你就可以很容易地理解问题所在。

让我们一起做吧。

<块引用>

在@INC 中找不到 SVN/Core.pm

这表示 git-svn (a perl script) 尝试导入/包含/需要一个 模块 SVN/Core.pm。找不到该模块的文件。

<块引用>

在@INC中找不到 SVN/Core.pm

即使没有深入的 Perl 知识,您也可以猜到 @INC 是“包含路径”变量。 Perl 在其中查找导入模块的目录列表。

进一步阅读。

<块引用>
@INC contains:
/opt/homebrew/Cellar/git/2.30.1/share/perl5
/Applications/Xcode.app/Contents/Developer/Library/Perl/5.28/darwin-thread-multi-2level
/Library/Developer/CommandLineTools/Library/Perl/5.28/darwin-thread-multi-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0/darwin-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0/darwin-2level
/Users/admin/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0)

这正是 @INC 的当前设置。它向您显示目录的确切列表。 仔细阅读,不要跳过!我们期待在那里看到与 git-svn 相关的东西,对吧?

问题 1:您的 Perl 模块路径似乎包含一些垃圾。那里混合了 2 个版本的 Perl(5.28 和 5.32.0),这不是一个好兆头。您是否疯狂安装多个版本从未清理过?..

接下来让我们阅读回溯:

/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN/Utils.pm line 6.
/opt/homebrew/Cellar/git/2.30.1/share/perl5/Git/SVN.pm line 25. 
/opt/homebrew/Cellar/git/2.30.1/libexec/git-core/git-svn line 23.

git-svn includes Git::SVN。显然,Git/SVN.pm 被 Perl 正确定位了;这表明至少有一些 @INC 路径确实包含 git 和相应的 git-svn 模块。 homebrew package 是捡到的。

链中的下一个是 Git::SVN::Utils,它在第 6 行导入 SVN::Core,从而触发崩溃。

请注意,没有 SVN/Core.pm 文件,也没有在 Git-2.30.1 Homebrew bottle for Big Sure 中(这是您从 M1 上的 brew install git 获得的)——也没有在 Git 源中!

那是因为它来自 separate librarySVN::Core,而不是 Git::SVN::Core)。

问题 2:git-svn 需要安装 libsvn-perl 库,它是一个依赖项。

你能find / -path '*/SVN/Core.pm'吗?依赖项是否安装在 Perl 看不到的地方?

问题 3:git Homebrew formula 应该将依赖项声明到 libsvn-perl(有人应该首先创建并上传,因为我没有发现它已打包),或者发送依赖项与git一起,例如在“瓶子”的 /git/2.30.2/share/perl5/FromCPAN/ 子目录中...因为它不在那里。

我不会走得更远。根据我的预感,发生的事情是没有人关心。 SVN 本身就是上世纪的技术(想想看); Git 公式的 test section 确实会检查发送电子邮件是否有效,但会忽略 git-svn。

欢迎您为开源社区做出贡献。如果您愿意,请自行修复错误。

这与您的硬件无关。

答案 1 :(得分:0)

我想通了,发布在 Homebrew 问题 #52490 页面上:https://github.com/Homebrew/homebrew-core/issues/52490#issuecomment-793464504