Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control Mercurial:表示分支已通过测试?_Version Control_Mercurial_Workflow_Dvcs - Fatal编程技术网

Version control Mercurial:表示分支已通过测试?

Version control Mercurial:表示分支已通过测试?,version-control,mercurial,workflow,dvcs,Version Control,Mercurial,Workflow,Dvcs,如果我们要迁移到DVCS(很可能是Mercurial),我正在我的公司建立一个工作流。我想做的事情之一是为QA建立一个存储库。其想法是,每个开发人员都在一个分支上工作,完成后,该分支将被推送到QA。从那里,测试团队可以进行测试并报告任何错误。一旦分支经过全面测试并被接受,它将被推送到一个暂存存储库,在该存储库中,在推送到中央存储库之前,将合并回主线 如果每个人都只是以某种方式交流他们的工作状态,这会很容易,但我知道这并不总是像你希望的那样发生。我担心的是QA回购协议中的分支正在等待,但没有人知道

如果我们要迁移到DVCS(很可能是Mercurial),我正在我的公司建立一个工作流。我想做的事情之一是为QA建立一个存储库。其想法是,每个开发人员都在一个分支上工作,完成后,该分支将被推送到QA。从那里,测试团队可以进行测试并报告任何错误。一旦分支经过全面测试并被接受,它将被推送到一个暂存存储库,在该存储库中,在推送到中央存储库之前,将合并回主线

如果每个人都只是以某种方式交流他们的工作状态,这会很容易,但我知道这并不总是像你希望的那样发生。我担心的是QA回购协议中的分支正在等待,但没有人知道它是否正在等待测试、当前正在测试、等待修复、等待推送到暂存区等。因此,我想要的是如何将状态添加到分支的想法?我们也可以使用钩子来通知人们状态的变化


任何想法都将不胜感激。

本网站创始人之一乔尔·斯波尔斯基(Joel Spolsky)制作了一个名为的程序,该程序与Mercurial集成,可以轻松跟踪每个人的状态。

我不完全确定您的工作流程是如何工作的,但以下是一些想法:

  • 测试时使用和。键入
    hg branchs
    将显示哪些分支仍处于挂起状态

  • 您可能会使用一个用于自动通知添加到QA repo的新变更集。

    一个简单的方法可能是在repo的根文件夹中保存一个元数据文件,名为
    .teststatus
    或类似的文件,该文件类似于:

    # branch-name, last passed revision
    default, 0123456789ab
    stable, 0123456789ac
    bobs-dev-branch, 0123456789ad
    marys-dev-branch, none
    

    在这里,使用标签或书签感觉像是一种虐待。不能跨分支使用相同的标记(例如,
    传递的
    必须是
    稳定传递的
    ),并且标记通常不会移动。另一方面,书签是要移动的,但仍然存在分支名称空间的问题。

    如果某个东西还没有准备好进行QA,开发人员为什么要将它推送到QA存储库?我认为将变更集推送到QA指定的存储库的行为应该是该特性准备好测试的信号


    功能是我最喜欢的方法。

    不幸的是,我认为您需要一个不同的系统来跟踪工作流程的这一部分

    存储库由不应该随意更改的内容组成,但是当前的Q&A状态必然会与存储库的内容正交地更改

    让我换一种说法。Q&A存储库中有10个变更集,可以进行测试。每个测试人员关注的内容、每个测试的状态等都会发生变化,即使这10个变化集保持不变

    我肯定会尝试使用错误跟踪系统,在该系统中,您可以以某种方式集成存储库历史,即使只是通过将系统中的问题链接到其变更集

    我注意到你关于购买窑炉得不到支持的评论,但你应该能够集成其他系统,这会给你类似的东西

    我会非常抵制尝试将Mercurial压入它不支持的服务,尝试使用标签将失败惨重,书签会给你带来问题,正如你已经注意到的


    因此,再次尝试寻找一个单独的系统来跟踪问答状态。

    我曾经考虑过标签,只是不确定是否要保留这么多标签。是否会在分支的顶端设置一个标记,指示其状态,然后在状态发生变化时进行更新?还是每次状态更改时都必须创建一个新标记?我们是否可以在没有标记的情况下(即,标记仅存在于QA repo中)从QA repo推送到暂存repo(合并发生的地方)?分支关闭时,实际发生了什么?它还能更新吗?至少可以合并回主线吗?或者关闭是合并的一部分(在这种情况下,我想合并已经表明分支已经过测试)。关闭的主要效果是将其从分支和头列表中删除。您仍然可以合并分支、更新分支,甚至可以再次提交分支,这会产生重新打开分支的效果。re:tags-是的,到处都会有标签。它们在某些方面很好,但如果使用太多,它们确实会使您的存储库变得混乱。FWIW,我对我的两个建议都感觉不太好。我喜欢你想做的事,但想不出好的解决办法。如果我是你的话,我想我会对标签做更多的挖掘,以及在把它们推到另一个存储库之前你如何将它们剥离出来。不幸的是,让我的公司为FogBugz买单就像从石头里取血一样。但是你让我想到我们可以用Bugzilla来跟踪状态。每个分支应该已经链接到一个bug(无论它实际上是一个缺陷还是一个特性等),因此我们可以在Bugzilla中添加一个额外的字段来指示状态。是的,这是非常明显的,但不是唯一的用例。当测试人员发现问题并将其报告给开发人员时会发生什么。该分支仍然存在于QA-repo中,但实际上它正在等待开发人员进行修复,然后才能重新启动测试。因此,我们需要一些方法来向其他可能正在寻找开始测试的测试人员表明这一点。有一个扩展可以精确地完成这项工作,并且非常简单,可以适应OP的确切用例:和