【问题标题】:Separating work in MercurialMercurial 中的分离工作
【发布时间】:2016-01-27 22:33:59
【问题描述】:

我正在使用 Mercurial,并且我有一个关于分离各种工单的工作的问题(我使用 PyCharm 作为我的 IDE,但这更像是一个一般的 Mercurial 问题)。

我的工作流程是这样的:申请一张票(错误、功能、重构等),创建一个关联的书签,修改,将我的书签推送到代码审查,代码准备好进行集成测试。在集成测试期间,我获取所有书签,合并它们并进行测试。

我的问题是当我向上推代码时。我推送的第一个书签沿默认分支继续,而我推送的第二个、第三个、第四个等书签沿默认分支创建新的头。这很好,因为如果在测试过程中发现了错误,则可以删除相关书签的代码,并且可以继续测试/发布剩余的代码。 (即:我可以挑选要合并和测试的书签)问题出在第一个书签上。如果我理解Mercurial,你只能合并headers,这意味着我要合并测试的第2、3、4等书签必须与被推上去的第一个书签合并;这意味着如果我需要从第一个书签中提取代码,我不能(即:第一个书签必须是合并组的一部分)。

现在,这可以通过使用分支来解决。一个新的分支是一个新的“头”,所以我可以选择要合并和测试的分支。然而,据我了解,Mercurial 中的分支被认为是一个很长的时间(比如拥有 QA、测试和发布分支),而不是像错误修复这样的小事情。

我应该只使用分支,还是我做错了什么?

【问题讨论】:

    标签: mercurial pycharm


    【解决方案1】:

    通常,您可以合并任意版本,除非其中一个是另一个的直接后代。

    只有在您更新到书签后,书签才会变为活动状态。

    如果您不希望书签变为活动状态,只需通过引用哈希更新到它所附加的版本。

    据我了解,您实际上缺少一个书签。一个书签,指示已批准的头部并且不包含来自您的错误修复头部的任何测试代码。您可以使用特殊的 @ 书签为该修订添加书签。

    【讨论】:

    • 我在“开始”处有一个书签,所有票都是“分支”的(“开始”书签几乎总是在最新版本中)。当创建第一个票证书签并提交更改时,创建了一个新的头(提交成为新的提示,我不想要),而其他书签确实创建了一个新的头。由于我只能合并头,我必须更新到头(现在包含第一个书签中的代码,因为它没有创建新头)。 IE:第一张票必须集成。
    • 如解释:您的理解至少部分错误!您可以将任意变更集与任何其他任意变更集合并,只要它们不是线性相关的,例如一个是另一个的后代。这与一个或另一个是否是头部变更集无关
    • 但是,您不应该单独测试所有错误修复,从而单独测试您的每个(带书签的)头吗?还要检查@书签的含义。它不像任何书签。它表示要更新到的默认修订版
    • 在这种情况下,我认为我的理解没有错。问题是,在推送第一个书签后,它不会创建一个单独的头,它会在现有头上继续(即:它们是线性相关的,因此我无法将第一个书签合并到我的“发布候选”书签中)。几分钟前我意识到这不是问题(有关详细信息,请参阅我的答案)。我确实对它们进行了单独测试,但我也进行了集成测试,以确保来自修复 A 的代码不会更改/破坏修复 B 所依赖的代码。我会检查@书签,没有意识到有约定。
    【解决方案2】:

    哦,等等,我想通了;我只是傻了,对不起那些家伙。

    所以供将来参考: 我的问题是我无法挑选要合并的书签,因为第一个书签将沿着“开发主线”继续,我必须更新它(因为它是一个头,我只能合并头)。 但是,绝对没有什么可以阻止我更新到不同的头部(例如书签 #2)并合并到我想要的任何书签中。 IE:出于某种原因,我不得不更新到“主线”头(其中包含来自书签 #1 的代码)以进行合并,而我不必这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多