情况:我们公司创建了使用 Hudson 从 git 存储库中的代码构建的软件版本。有时,由于试用期已过,我们需要重现以前版本的构建。这带来了一个问题,因为我们需要找到与该软件版本对应的代码版本。我们的开发人员不使用标签或分支工作,因为它不符合我们的工作风格。
作为这个问题的解决方案,我认为我们应该在每次构建成功时包含一个自动标记系统。
我想到的工作流程如下(在我们的构建机器上执行):
- 如果进行了任何本地更改,则丢弃所有本地更改:
git checkout .
git clean -df
- 获取最新版本:
git pull
- 转到所需的版本
git checkout .
或git checkout <tag>
- 构建软件
- 如果成功:标记当前版本,并将标记推送到存储库:
git tag -m "automated tag" versionXXX
git push --tags
关于这种工作方式,我有 3 个问题:
- 这种工作方式有什么明显的缺陷吗?(含糊,我知道 - 对不起)
- 对于这个用例,使用带注释的标签比轻量级标签有什么优势吗?大多数帖子都推荐带注释的标签,但我并没有真正看到附加值,尤其是对于这个用例。
- 我们的软件由多个模块组成,每个模块都有自己的 git 存储库。其中一些模块几乎没有更新。有很多标签指向同一个提交有什么缺点吗?