【发布时间】:2016-07-23 04:45:34
【问题描述】:
VERSION 变量放在文件中
即: 版本='1.0.0'
我希望在创建新标签(发布)时,git 会以某种方式将此 VERSION 变量的值替换为发布/标签名称。
有可能吗?
【问题讨论】:
标签: git
VERSION 变量放在文件中
即: 版本='1.0.0'
我希望在创建新标签(发布)时,git 会以某种方式将此 VERSION 变量的值替换为发布/标签名称。
有可能吗?
【问题讨论】:
标签: git
不在 git 本身中,不。
这里需要注意两点:
git commit 通过获取索引/暂存区域中的任何内容并将其转换为提交来创建新快照。1
这意味着,给定一些提交,将提取到工作树的内容是当时索引中的任何内容。要创建一个新的、不同的、已保存的树,您必须更改索引,然后进行新的提交。
标签不是提交。
标签有两种形式:“轻量级”标签,它只是名称以refs/tags/ 开头的简单引用,以及“带注释”标签,其中 git 将一个带注释的标签对象添加到存储库中——这个标签对象必然指向一个已经存在的提交对象2——然后是一个使用名称的新轻量级标签,指向带注释的标签对象。
给定一个标签名称,即以refs/tags/ 开头的引用,当它指向一个提交时,该标签是“轻量级”的,而当它指向一个带注释的标签对象时,它是“带注释的”,然后它指向一个犯罪。无论哪种方式,标签指向一个提交——在你创建标签时已经存在的一些提交。
因此,任何实际存储在 git 中的文件,都必须在提交时进行更改(并添加到索引/暂存区域)。因此,您可以编写一个小程序:
这将达到你想要的结果。
或者,您可以设计您的系统,使版本文件不通过 git 维护,而是由构建系统创建,它以您喜欢的任何方式从 git 中提取版本信息。
有关更多信息,请参阅有关使用 git describe 的这些 SO 问题:
1如果新提交与当前提交相同,并且新提交不是合并提交,git commit 拒绝提交,除非您强制提交,--allow-empty .
2从技术上讲,轻量级标签或带注释标签内的哈希可以指向提交对象以外的其他内容。我过去曾将它用于一些特殊的黑客攻击,并且它有效。但这不是 git 通常会做的事情。
【讨论】: