我们CI的一部分是使用version.txt
文件中指定的版本标记我们的repo。我们简单地做:如果标签已经在我要提交的提交中,git标签应该不会失败
git tag `cat version.txt`
由于我们没有办法自动增加版本的方式(有没有办法知道我们正在做的主要或次要版本),更新version.txt
文件留给个人开发者。这意味着错误可以发生。
我们要的是:
- 如果版本已经更新,回购应被标记和部署。
- 如果版本尚未更新,CI周期应该失败。
- 但如果手动重新启动CI周期,这应该流畅运行
要求3可能是很容易满足,如果git tag
没有失败,每当我要标记的电流,它已经有一个标签提交。
也就是说,如果git tag 1.2.3
标签1.2.3
已经是一个老犯(好)失败,但如果是在提交我要标记(坏)它也失败。
是否有办法告诉git tag
不要失败,如果我想标记当前提交的标签之一,它已经有?
否则,我需要自己实现此功能,通过获取标记引用的提交,并根据HEAD中的当前提交来检查它。
不要这样做:Git *假设*标记是永久的并且不变。如果某人删除了一个标签,然后重新标记,那么*已经有*标签的其他人将保留* old *标签值。要选择新的标签,他们必须*删除并重新创建标签。所以如果你有1000个用户,你会让1000个人运行2000个命令(一个删除,一个创建)。 – torek