如何以编程方式获取 Git 的版本?

Posted

技术标签:

【中文标题】如何以编程方式获取 Git 的版本?【英文标题】:How to get the version of Git programmatically? 【发布时间】:2021-08-20 23:53:59 【问题描述】:

如How can I find out what version of git I'm running? 中详述,您可以通过以下方式获取 git 版本

$ git version
git version 2.30.0

但看起来这是供人类使用的,而不是程序使用的。那是对的吗?如果是这样,是否有一个“管道”git version 命令可用于版本的数值比较?

【问题讨论】:

【参考方案1】:

我检查了源代码。有一条评论是关于保持git version 的格式稳定以便解析它是安全的。

void get_version_info(struct strbuf *buf, int show_build_options)

    /*
     * The format of this string should be kept stable for compatibility
     * with external projects that rely on the output of "git version".
     *
     * Always show the version, even if other options are given.
     */
    strbuf_addf(buf, "git version %s\n", git_version_string);
...

【讨论】:

【参考方案2】:

管道?

git --version | awk 'print $3'

【讨论】:

我问的是这样做是否安全,而不是如何 解析该特定值(该位是微不足道的)。 您要求“管道”和数字比较,您没有要求 API 稳定性... 这就是“管道”命令的。它们是不能以编程方式使用的稳定命令。 API 稳定性是以编程方式运行命令的先决条件。见git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain

以上是关于如何以编程方式获取 Git 的版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式获取正确的 iOS 版本?

如何以透明的方式从另一个 git 分支获取目录的副本?

如何以编程方式获取 gRPC / protobuf 版本?

如何以编程方式在 Android 设备中获取设备 (AOSP) 内部版本号?

如何在 iOS 上使用 Firebase 以编程方式获取 Crashlytics 版本

如何以编程方式获取解决方案中使用的 NuGet 包的版本?