我正在尝试设置jenkins以便与我的python repo持续集成。我有一切工作,它将轮询repo的更新,然后运行nosetests,成功或失败取决于测试的结果。如果测试通过,我希望它标记来自最新推送的提交编号(" v1.0。$ BUILD_NUMBER")。如果测试失败,我希望它恢复到以前的标记。
从最新推送标记提交的正确方法是什么? 如果失败则恢复的正确方法是什么?
我对注释与轻量级标签的细微差别以及还原与重置感到困惑。如果使用不当,尤其是后者可能会搞砸了。
答案 0 :(得分:2)
revert
创建一个新的提交,其中包含您要还原的提交内容的反向内容。
之前的git repo:
A---B---C
git revert C
之后的git repo:
A---B---C---C'
C'是C的反向提交。
reset
为分支设置一个新值(SHA)(就像它是一个指针)。既不生成也不删除提交。重置在几个开发人员之间共享的分支被认为是一个"残酷的"行为并将使您的共同开发人员处于有问题的状态,因此如果他们不知道reset
他们可能会再次合并提交(您想要删除)。
之前的git repo(当前分支是master):
A---B---C
\
master
git reset B
之后的git repo:
A---B---C
\
master
主分支现在指向提交B.提交C在那里,但没有任何指向它,所以它可能是垃圾收集。
annotated tag
在Git存储库中创建一个额外的标记对象,允许您存储与标记本身相关的信息。这可能包括发行说明,有关发布的元信息,以及可选的签名,以验证它指向的提交的真实性。
VS
lightweight tag
除了堆叠到的提交的SHA之外什么也没有。
答案 1 :(得分:2)
如果您在构建和测试之前将jenkins配置为与master合并,那么对每个人来说都不会容易得多。然后,如果测试通过,jenkins可以将结果推送到master。如果测试失败,则无法恢复。