git: svn 不是 git 命令 - Mac

Gre*_*reg 9 git git-svn

我昨天没有问题,但今天我不能再跑git svn了。它说:

git: 'svn' is not a git command. See 'git --help'.

The most similar commands are
    fsck
    mv
    show
Run Code Online (Sandbox Code Playgroud)

我不知道它是否相关,但从昨天开始我更新了npm(6.14.4) 和node(v12.6.0)。

我在 macOS Catalina

jqg*_*imo 9

macOS Big Sur v11.1 (20C69)GitHub 上找到了一个简单的固定解决方案。

  1. 确保使用 brew 安装 git、svn、perl。

    brew install git
    brew install perl
    brew install subversion
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑/usr/local/Cellar/git/2.30.0/libexec/git-core/git-svn

    替换#!/usr/bin/perl#!/usr/local/bin/perl

  3. git svn 作品。


上述解决方案仅适用于 perl 5.32.0。

当我将 perl 更新到 5.32.1 时,git svn无法再工作。

无法在@INC 中找到 SVN/Core.pm(您可能需要安装 SVN::Core 模块)...

我在GitHub 上找到了解决方案。

现在subversion是用system perl构建的,所以我们可以添加一个环境变量来解决这个问题:

export PERL5LIB=/usr/local/lib/perl5/site_perl/#{perl_version}/darwin-thread-multi-2level
Run Code Online (Sandbox Code Playgroud)

您应该替换#{perl_version}为系统 perl 的版本。

对于 macOS Big Sur:

export PERL5LIB=/usr/local/lib/perl5/site_perl/5.28.2/darwin-thread-multi-2level
Run Code Online (Sandbox Code Playgroud)


dee*_*lan 5

更新:2020 年 9 月

似乎结局到了。遵循原始建议将永远删除颠覆。我找到了适用于 MacOS经过验证的 Subversion 版本并下载并安装了它。然后我需要将 Subversion 添加到$PATH变量中以取代 Apple 的svn(它只打印一条消息说不再包含 subversion)。要添加它,请将此行添加到您的~/.zprofile

export PATH=/opt/subversion/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

这将修复svn。我仍然没有想出如何修复git svn

注意:我也知道可以从 获得颠覆homebrew,但homebrew我公司的政策禁止这样做。如果homebrew对某人更有效,请在此处发布您的结果。

原始答案:2020 年 3 月

今天同样的事情发生在我身上。软件更新后,git svnsvn都不见了。Apple似乎正在弃用 XCode 中的 Subversion:

Xcode 不再提供对 Subversion 的命令行工具支持——包括 svn、git-svn 和相关命令。如果您需要 Subversion 或相关的命令行工具,请通过运行 xcode-select --install 来安装命令行工具包。(50266910)

同时,我能够通过删除 XCode 命令行工具并重新安装它们来解决这种情况:

sudo rm -Rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Run Code Online (Sandbox Code Playgroud)

在那之后,git svnsvn回来了。希望这能让我们在最终弃用和删除之前暂停执行。