我正在将 Git 用于 Google Code 上的编码项目。
我如何使修订号变得有意义,例如Alpha v1.0
或r86
代替d68838463ecf
或其他类似的混乱。
我正在将 Git 用于 Google Code 上的编码项目。
我如何使修订号变得有意义,例如Alpha v1.0
或r86
代替d68838463ecf
或其他类似的混乱。
所有 git 提交都被赋予一个加密安全的 sha1 标签,就像你粘贴的那个标签一样。如果您要标记特定提交,则应使用 git tag 并使用您选择的任何标签标记提交。
git tag "Release 1.0" 1f42f25b0e
因为 git 是分布式的,所以它没有办法使用同步提交号(如 SVN),而所有发行版都必须相互通信。此外,需要足够长的字符串以数学方式确保提交名称的唯一性。这就是为什么使用 sha1 作为提交的唯一名称,但您可以通过顶部的标签进行标记。
如前所述,没有办法使用 Git 来增加“漂亮”的修订号。如果你想要那个和 DVCS,请转向Mercurial。但是,请注意,Mercurial 递增修订只是一种本地方便表示法。
至于 git,它不应该影响您的版本编号方案。您可以创建自己的版本号方案,希望它是理智的,并相应地标记提交。例如,当您达到 1.0 版时,标记提交:
$ git tag -a v1.0
这会将带注释的标签应用于当前HEAD
分支。为此,您应该始终使用带注释的标签,除非您知道自己在做什么。
这将创建标签,现在git describe
将告诉您:
$ git describe
v1.0
现在,事情变得有趣的是,如果您提交了其他内容并且不再指向标签。然后,git describe
仍然有用:
$ git describe
v1.0-1-g9f52f48
现在,git describe
将为您提供一个更友好的唯一标识符,用于标签之间的中间提交。上面的符号表示最近的标记、超出它的提交数以及所描述的实际提交的短哈希。
因此,使用git describe
和注释标记是始终为 git 提供唯一版本号的简单方法,类似于使用 subversion 的修订作为构建标识符。
你可以使用 git-tag 来做到这一点。
git tag yourTag1.0 ed851a...<-The second param is the commit hash you want to tag
要查看标签,您可以执行以下操作
git log --decorate
你可能会得到类似下面的东西
commit ed851a7107f457935b0c6f75c4458116024a37e2 (HEAD, tag: myTag1.8, master)
Author: Jerry test <Jerry.test@test.com>
Date: Wed May 2 16:47:11 2012 -0400
testing
由于 Git 修订 ID 是十六进制的,因此您可以将其转换为十进制数(您的示例将解析为 235880548024015),然后将其模数为您可以在 ver.sub.rev.build 版本控制方案中使用的内部版本号。但是,正如 Ben 所说,这是一个 SHA1 哈希;因此,它会受到“雪崩效应”的影响,即输入的微小变化会对输出产生巨大的变化。因此,从修订版生成的内部版本号不会是连续的。