为每个部署构建在git中制作标记是否是一个好习惯?

我刚从Subversion切换到Git。 Subversion的集中式体系结构为我们提供了一个有意义的修订版本号,我用它来构建基于Web的应用程序的更改日志,以便轻松登录并查看在任何给定服务器上运行的版本。 Git没有友好的内部版本号。 相反,我看到它建议你从git statusgit tags的输出中解析出某些东西。

我不相信我们会为我们的分支机构始终使用客户友好的名称(有时我们将它们命名为不想使用我们的系统公布的个人客户)。 所以我想我可以让构建生成一个datetimestamp / timestamp标签,如2012-11-21_08-40-23并使用我以前使用Subversion版本号的方式。 构建只会生成此标记,并在构建用于部署的战争文件时将其添加到Git,因此任何部署到任何服务器都会生成一个标记。

目前,我们每隔几天就会部署测试,每月进行几次集成(以突发形式),并在每几个月进行一次生产。


你可能想看看git-version-gen脚本来生成很好的版本号。

它假设你有'vX.Y'形式的标签,并且会给你一些版本号,比如'vX.Yz-aaaaaaaa',其中z是自从标签vX.Y和aaaaaaaa缩短了当前HEAD的SHA的提交数。

至于标记策略,这绝对值得以这种方式标记发布版本。 在集成和测试版本上使用它取决于开发的进展速度。

它也将在私人开发人员构建中工作,因为标签是从原始服务器拉取的。


相反,我看到它建议你从git status或git标签的输出中解析出某些东西。

这是丑陋的建议。 真的很丑陋。 git在这里或多或少地描述规则,阅读man git描述将比statustaglog或第三方准备使用的脚本更有用

水木清华。 像这样做的任何修订的好命名技巧(你只能标记一些变更集,而不是每个发布)

git describe --tags --long --match 'SUBSTRING-OF-CLIENT_TAGFAMILY*'


SVN版本号的要点是能够将发布的代码与源代码控制中的特定版本相关联。 我现在认为,标记是不必要的,我的问题的答案实际上是使用由以下产生的提交散列:

git log -1 --format=%H

我从未回答过我自己的问题。 谢谢大家的回答。 我给你们每个人+1尝试。 我很抱歉,如果我的问题措辞不佳(回想起来 - 这是)。 如果有人想向我解释为什么这是错误的,以及如何解决它(或做得更好),我会很乐意接受他们的答案作为正确的答案。

链接地址: http://www.djcxy.com/p/7547.html

上一篇: Is it a good practice to make a tag in git for every deployment build?

下一篇: Push and pull branches in Git