如何获取Git构建号并将其嵌入到文件中?

16 浏览
0 Comments

如何获取Git构建号并将其嵌入到文件中?

我想介绍一个从Git版本中获取的版本常量。我知道如何做到这一点 - 在svn中以非常hackish的方式 - 你有关于如何在Git中实现这一点的任何想法吗?

0
0 Comments

Git中的建造号是指每次构建代码时自动生成的唯一标识符。有时候,我们希望获取Git的建造号并将其嵌入到一个文件中,以便在代码中引用。

通常,使用git describe命令可以获取Git的建造号。但是,在某些情况下,这个命令可能不会返回我们想要的建造号。下面是一个解决方法:

首先,使用以下命令获取包含建造号的描述信息:

git describe --all --long

这会返回一个类似于kubi描述的格式。如果我们只想要最后的部分(建造号),可以使用以下命令将其保存到version.txt文件中:

git describe --all --long | tr "-" " " | awk '{ print $3 }' > version.txt

编辑:正如一位朋友指出的,我们也可以只使用cut命令来实现,如果你希望的话:

git describe --all --long | cut -d "-" -f 3 > version.txt

这样就更接近我想要的结果了。现在,我只需要找到一种方法将其嵌入到文件中。我希望在代码中引用建造号。

这似乎是一个不同的问题,但是它绝对是可行的。在PHP中,我们可以使用以下代码将建造号嵌入到一个变量中:

$git_version = file_get_contents("version.txt"); - 现在,$git_version中包含了建造号。

通过上述方法,我们可以轻松地获取Git的建造号并将其嵌入到文件中,以供在代码中引用。

0
0 Comments

Git是一个广泛使用的版本控制系统,用于跟踪文件和代码的修改。在Git中,每个提交都有一个唯一的SHA-1哈希值作为标识符。为了方便识别和管理,Git还为每个构建生成一个版本号。

在Git 2.12之前,Git的构建号是通过运行"git describe"命令来计算的。这个命令会基于一个标签来确定构建号,标签的命名格式为"v[0-9]*"。例如,标签"v2.11.0-rc2-2-g7f1dc9"表示构建号为2.11.0-rc2,其中包含2个提交和一个修订号为g7f1dc9。

在Git 2.12中,开发者修改了计算Git构建号的方式。他们认为,指定一个特定的缩写长度没有意义,因为现在的版本库大小可以自动决定合适的缩写长度。所以他们决定移除命令中的"--abbrev"选项,让Git根据配置和仓库内容自动选择合适的缩写长度。

为了实现这个修改,开发者在Git的构建脚本"GIT-VERSION-GEN"中更新了命令。他们将原来的命令"git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null"替换为"git describe --match "v[0-9]*" HEAD 2>/dev/null"。这样,Git就会自动选择合适的缩写长度来生成构建号。

通过这个修改,开发者旨在简化Git的构建流程,并且使得默认的构建号更加合理和易于使用。

总结起来,为了获取Git的构建号并将其嵌入到文件中,可以使用以下步骤:

1. 运行命令"git describe --match "v[0-9]*" HEAD"来获取Git的构建号。

2. 将构建号嵌入到目标文件中。

这样,就可以通过Git的构建号来识别和管理不同版本的代码和文件。

0
0 Comments

问题的出现原因:

这个问题的出现是因为作者想要获取Git的构建编号,并将其嵌入到一个文件中。作者提到,他在构建过程中运行了一个脚本,但是这个脚本只能获取到分支名称,而无法获取版本号。

解决方法:

作者提供了一个解决方法,他在构建过程中运行了以下代码:

git describe --all > version.txt

这段代码将Git的描述信息输出到一个名为version.txt的文件中。然后,在应用程序中,作者从这个文件中读取版本号并显示给用户。

作者还提到,为了避免将version.txt文件提交到Git仓库中,需要将其添加到.gitignore文件中。

这种方法的好处是,如果对发布进行了标记(tag),那么git describe命令将输出标记的名称,否则将输出提交哈希值。

需要注意的是,作者提到他使用的是git describe命令,而不是git describe --all命令,因为后者返回的是一个带有分支名称的字符串。

为了获取Git的构建编号并将其嵌入到一个文件中,作者运行了一个脚本,其中使用了git describe命令。这个命令将Git的描述信息输出到一个名为version.txt的文件中。然后,作者从这个文件中读取版本号并在需要时显示给用户。这种方法的好处是,如果对发布进行了标记,那么git describe命令将输出标记的名称,否则将输出提交哈希值。为了避免将version.txt文件提交到Git仓库中,需要将其添加到.gitignore文件中。

0