是否可以在git标签期间自动替换自定义字符串?

时间:2016-04-03 18:09:26

标签: git

VERSION变量放在文件中

即: VERSION ='1.0.0'

我希望在创建新标记(发布)时,不知何故git会将此VERSION变量的值替换为发布/标记名称。

有可能吗?

1 个答案:

答案 0 :(得分:0)

不是git本身,不是。

你总能得到你想要的东西

你需要记下两件事:

  1. git commit通过获取索引/暂存区中的任何内容并将其转换为提交来创建新快照。 1

    这意味着,在给定一些提交的情况下,将提取到工作树的内容是当时索引中的内容。要创建一个新的,不同的,保存的树,您必须更改索引,然后进行新的提交。

  2. 标签不是提交。

    标签有两种形式:"轻量级"标签,只是名称以refs/tags/开头的引用,"注释"标签,其中git将一个带注释标签的对象添加到存储库 - 这个标签对象必然指向已经存在的提交对象 2 - 然后是一个新的轻量级标签,使用该名称,指向注释 - 标签对象。

    给定标签名称,即以refs/tags/开头的引用,该标签是"轻量级"当它指向提交时,"注释"当它指向一个带注释标记的对象,然后指向一个提交。无论哪种方式,标记指向提交 - 在您制作标记时已经存在的提交。

  3. 但如果你有时尝试,你可能会发现,你得到了你需要的东西

    因此,实际存储 in git中的任何文件都必须在提交时更改(并添加到index / staging-area)。因此,您可以编写一个小程序:

    • 更新版本文件;
    • 提交更新;和
    • 标记提交

    将达到您想要的效果。

    或者,您可以设计系统,使版本文件通过git维护,而是由构建系统创建,构建系统以任何您喜欢的方式从git中提取版本信息。

    有关使用git describe的更多信息,请参阅以下这些问题:

    1 如果新提交与当前提交相同,并且新提交不是合并提交,则git commit拒绝进行提交,除非您强制提交,--allow-empty {1}}。

    2 从技术上讲,轻量级标记或带注释标记内的哈希可以指向除提交对象之外的其他内容。我过去曾经使用过这个特殊的黑客攻击,但它确实有效。但git通常不会这样做。