1

我正在将 Git 用于 Google Code 上的编码项目。

我如何使修订号变得有意义,例如Alpha v1.0r86代替d68838463ecf或其他类似的混乱。

4

4 回答 4

6

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

git tag "Release 1.0" 1f42f25b0e

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

于 2012-05-02T20:47:03.017 回答
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 的修订作为构建标识符。

于 2012-05-02T22:54:09.267 回答
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
于 2012-05-02T20:49:49.957 回答
0

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

于 2012-05-02T20:51:36.507 回答