用户友好的Git修订号?

时间:2012-05-02 20:45:38

标签: git google-code

我正在使用Git进行Google Code上的编码项目。

如何让版本号变得有意义,例如Alpha v1.0r86而不是d68838463ecf或其他类似的混乱。

4 个答案:

答案 0 :(得分:5)

所有git提交都会获得一个加密的安全sha1标记,就像您粘贴的那样。如果您要标记特定提交,则应使用git标记并使用您选择的任何标签标记提交。

git tag "Release 1.0" 1f42f25b0e

因为git是分布式的,所以没有办法使用同步提交号(如SVN),而且所有的发行版都不能相互通信。此外,需要足够长的字符串来数学确保提交名称唯一性。这就是使用sha1作为提交的唯一名称的原因,但允许您通过顶部的标签进行标记。

答案 1 :(得分:4)

正如已经提到的那样,没有办法用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的修订版作为构建标识符。

答案 2 :(得分:0)

你可以使用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

答案 3 :(得分:0)

由于Git修订版ID是十六进制的,您可以将其转换为十进制数字(您的示例将解析为235880548024015),然后将其模数为可在ver.sub.rev.build版本控制中使用的内部版本号方案。然而,正如Ben所说,这是一个SHA1哈希;因此它会受到“雪崩效应”的影响,输入的微小变化会对输出产生巨大的变化。因此,从修订版生成的内部版本号将不是顺序的。