代码之家  ›  专栏  ›  技术社区  ›  Elazar Leibovich

“qrefresh”被认为有害吗?

  •  5
  • Elazar Leibovich  · 技术社区  · 15 年前

    这个 qrefresh MQ 延期对我来说没有意义。我将解释我的假设:

    1. 如果你不知道某个补丁应该在哪个版本上应用,它就没有什么价值。你只是理论上不知道拒绝意味着什么。即使某个修订没有被拒绝,你也不确定整个修订是否会被编译。
    2. 一旦你 克雷什 修补程序队列中的某个修补程序,实际上会丢失队列中下一个修补程序的父级。因此,如果没有你的干预,下一个补丁可能是无用的。
    3. 为了修复下一个补丁,最好合并它,而不是手动编辑 .rej ,个文件。不仅仅是因为更好的工具,如果你有原始的联合国- 克雷什 埃德·帕奇,你有更多的信息 导致您丢失了实际需要的信息,以便使对修补程序所做的更改有意义。

    所以我不明白为什么有人会想用这个命令。

    一个更好的选择是,应用所有的补丁,然后 hg update hg revert 要更改的修补程序的工作目录。更改此修补程序,将其提交到新修订版,然后在此新修订版上重新定位所有其他修补程序。

    克雷什 仅当不编辑单个修补程序时才相关。看来 git 的方法(将补丁应用于本地分支)比补丁队列更有意义。

    我说的对吗,我最好用回扣?我错过了什么吗?

    从迁移 kiln.se.com 由于没有响应和低观看率

    2 回复  |  直到 15 年前
        1
  •  3
  •   Luke Girvin Nathan Bedford    14 年前

    编辑 chapter about patches 属于 权威指南 . 它说的更多或者 少一些相同,但更多 详细说明了我的答案。它也 建议一种方法(对我来说有点复杂 手术室在找补丁 为了。

    也许您认为mq只是一个补丁导入工具?这不是我的主要用途,对我来说qrefresh非常有用。对于我来说,典型的用例是当我在发布的存储库之上工作时。

    我通常同时写一系列补丁。我首先创建一个新的空补丁。当我相信某个(部分)功能完成时,我 qrefresh 克雷什

    如果在以后处理另一个修补程序时,我看到应该在前一个修补程序中进行某些更改(因为它在逻辑上属于前一个修补程序),则不会在顶部修补程序中进行更改,也不会创建新的修补程序。首先我 现在的补丁,然后 qpop 到更改所属的上一个修补程序,然后进行我的更改。完成后我 克雷什 qpush 回到我工作的地方,等等。

    当你这样做的时候,合并通常很容易,我几乎不会被拒绝 qpop公司 ing和 qpush公司

    当我确信我的完整补丁系列已经准备好发布时,我 qfinish 整个系列,然后从一个新的空补丁堆栈开始。

    使用修补程序的全部要点是修补程序尚未提交,因此可以很容易地进行更改,为此您需要 . 好吧,我可以得到同样的结果创建新的补丁和 qfold 但这样做并没有意义,只有两个命令而不是一个。

    现在,当补丁是外部贡献时,作为我项目贡献的主要维护者,它包含在贡献者提供的补丁中,并且它们永远不会直接到达存储库。他们首先进入我的主补丁堆。如果他们对我正在处理的程序的同一部分进行更改,很可能会导致拒绝(如果是这样,我基本上根本不插入它,它可能会造成严重破坏)。如果它们应用于程序的其他部分,而当前没有被更改,那么它们基本上是合并的,没有任何问题,可以在补丁堆栈中的任何点导入,没有义务在特定的修订版上插入它们。但是我总是阅读这些更改,并且经常稍微更改贡献的代码。然后再次使用qrefresh将外部补丁更新为我认为应该是的。

    推荐文章