有关自动git标记的问题

时间:2013-01-08 14:50:42

标签: git

情况:我们公司创建的软件版本是使用Hudson从git存储库中的代码构建的。有时,我们需要重现先前版本的版本,因为试用期已过期。这引起了一个问题,因为我们需要找到与该软件版本相对应的代码版本。我们的开发人员不使用标签或分支,因为它不符合我们的工作方式。

作为这个问题的解决方案,我认为每次构建成功时我们都应该包含一个自动标记系统。

我想到的工作流程是下面的(在我们的构建机器上执行):

  1. 如果做出任何更改,请删除所有本地更改:git checkout . git clean -df
  2. 获取最新版本:git pull
  3. 转到所需的版本git checkout .git checkout <tag>
  4. 构建软件
  5. 如果成功:标记当前版本,并将标记推送到存储库:git tag -m "automated tag" versionXXX git push --tags
  6. 关于这种工作方式我有3个问题:

    1. 这种工作方式有明显的缺陷吗? (含糊,我知道 - 对不起)
    2. 对于这个用例,在轻量级标签上使用带注释的标签是否有任何优势?大多数帖子都推荐带注释的标签,但我并没有真正看到增值,特别是对于这个用例。
    3. 我们的软件由多个模块组成,每个模块都有自己的git存储库。其中一些模块很难更新。让很多标签指向同一个提交是否有任何缺点?

1 个答案:

答案 0 :(得分:2)

  

1)这种工作方式是否存在明显缺陷? (含糊,我知道 - 抱歉)

不。

  

2)对于这个用例,在轻量级标签上使用带注释的标签是否有任何优势?

不,如果您没有在标记消息中添加任何有意义的内容,那么首先创建一个消息就没有意义了。没有真正的缺点(它们几乎不占用任何空间)。 如果从构建中获得任何结果,您可以将它们放在标记注释中(除非您还有其他已检查的日志记录机制),例如警告的数量,或类似的东西。

  

3)让很多标签指向同一个提交是否有任何缺点?

不,除了可能使标签命名空间变得混乱(标签名称必须是repo独有的)之外,没有问题。如上所述,他们几乎不使用任何空间。 如果冗余标记有任何问题,您可以实现如下策略:如果前一个构建的标记指向我现在要标记的相同提交,请不要​​标记它。如果您查找特定版本的标记,请在您指定的标记之前使用最新版本的标记。 (这只有在查找自动化时才可行;否则只需重新标记提交。)