git - 自动化脚本确定 git 是否真正安装在 OS X 上的最佳方法

标签 git macos

我可以通过多种方式找到名为 git 的可执行文件(基本上相当于 which git)。但我所知道的所有解决方案都被 OS X 的假 /usr/bin/git 程序击败,该程序是一个提供安装 Xcode 的 git 对话框的钩子(Hook)(我'随后将其称为 OS X git 安装程序。)

我想检测这种情况,并将 git 视为未找到(如果这是唯一的情况)。我不想执行它来确定这一点,因为我不想触发安装程序对话框。

上下文:我想实现以下内容(作为更大的软件安装过程的一部分):

  • 确定是否安装了“真正的”git(即,名为 git 的可执行文件,而不是 OS X git 安装程序,位于 PATH 上),<
  • 如果是,请承认并尊重它并继续(我已经弄清楚了这部分),
  • 如果不是,请安装 git 项目中的一个(我已经弄清楚了这部分)。

如果需要的话,我很乐意解析 PATH 并自己搜索可执行文件,如果我能找到一种忽略 OS X git 安装程序的方法。如果启发法几乎总是正确的话,我对它感到满意;我不需要处理边缘情况(比如有人创建了一个名为 git 的可执行文件或脚本,但它与 git 不兼容)。

确定系统上是否安装了非 OS X git 安装程序 git 且无需执行 的最佳(最可靠,其次是最方便)方法是什么?/usr/bin/git (并触发安装程序对话框)?

最佳答案

没有最好的办法。有些东西无法自动发现,我当然可以拥有 $HOME/bin/git,它不是 git,但在我的路径中。

你可以做的就是将 git 的路径作为一个可配置项,并具有合理的默认值,并很好地记录它。 git 程序本身会执行此操作;它将在 few different places 中查找配置项最后允许 git --file configfile 作为最后一个选项来覆盖。

关于git - 自动化脚本确定 git 是否真正安装在 OS X 上的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272418/

相关文章:

gitahead - HTTPS 凭据不断 pop

ios - 如何避免#ifdef __x86_64__

objective-c - 将 iOS 版本添加到 Mac 应用程序

java - Jenkins Git 集成问题

objective-c - OSX NSUserDefaults 不工作

xcode - 设置 NSMenuItem 内 NSScrollView 的最大高度

macos - 在 OS X 的 QT 中找不到 Webkitwidgets

python - 将多个小型 git 存储库添加到更大的存储库

git - 文件可以在 Git 中暂存和取消暂存吗?

git - git reset --soft 的倒数