Git& CI:如果构建通过/恢复提交,如果失败,如何标记?

时间:2014-06-01 23:37:10

标签: git jenkins continuous-integration

我正在尝试设置jenkins以便与我的python repo持续集成。我有一切工作,它将轮询repo的更新,然后运行nosetests,成功或失败取决于测试的结果。如果测试通过,我希望它标记来自最新推送的提交编号(" v1.0。$ BUILD_NUMBER")。如果测试失败,我希望它恢复到以前的标记。

从最新推送标记提交的正确方法是什么? 如果失败则恢复的正确方法是什么?

我对注释与轻量级标签的细微差别以及还原与重置感到困惑。如果使用不当,尤其是后者可能会搞砸了。

2 个答案:

答案 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在那里,但没有任何指向它,所以它可能是垃圾收集。

来自AlBlue’s Blog

  

annotated tag在Git存储库中创建一个额外的标记对象,允许您存储与标记本身相关的信息。这可能包括发行说明,有关发布的元信息,以及可选的签名,以验证它指向的提交的真实性。

VS

lightweight tag除了堆叠到的提交的SHA之外什么也没有。

答案 1 :(得分:2)

如果您在构建和测试之前将jenkins配置为与master合并,那么对每个人来说都不会容易得多。然后,如果测试通过,jenkins可以将结果推送到master。如果测试失败,则无法恢复。