为每个部署构建在git中创建标记是一个好习惯吗?

Gle*_*son 9 svn git deployment web-applications build

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

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

目前我们每隔几天进行一次测试,每月集成几次(爆发),每两个月进行一次生产.

Rab*_*ber 5

您可能希望查看git-version-gen脚本以生成不错的版本号.

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

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

它也适用于私有开发人员构建,因为标签是从源服务器提取的.


Laz*_*ger 5

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

这是丑陋的建议.真是丑陋而蹩脚.git或多或少地描述了这里的规则,阅读man git describe将比status或者tag或者log或者是第三方即用型脚本更有用

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

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


Gle*_*son 2

SVN 中修订版号的目的是能够将已发布的代码与源代码管理中的特定修订版关联起来。我现在认为标记是不必要的,我的问题的答案实际上是仅使用由以下方式生成的提交哈希:

git log -1 --format=%H
Run Code Online (Sandbox Code Playgroud)

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