为不使用MQ创建的一系列现有变更集创建补丁?

时间:2016-04-27 14:41:33

标签: mercurial patch mq mercurial-queue

我最近开始研究使用Mercurial的开源项目。 我是Mercurial的新用户,因此我阅读了HG书并开始工作。 我的目标是编写代码并始终从上游提取和合并更改 所以我可以保持最新状态。我正在研究的地区也很重 由他人开发,所以我想在很长一段时间后合并我的更改 时间。我克隆了一个回购。所以,我的工作流程是这样的:

  1. 我创建了一个书签mybook

  2. hg up mybook

  3. 编写代码

  4. 3.1 hg commit -m 'new functions'

    1. hg up default

    2. hg pull

    3. hg update

    4. hg up mybook

    5. hg merge default

    6. 转到第3步。

    7. 在我看来,这是最简单的工作流程,可以让我保持最新状态。一世 也只有一个HEAD,因为我总是合并。

      由于我还不是贡献者,我不允许将更改推送到远程 回购。

      最近我想向项目负责人展示我的工作,他说给我发一个补丁。 这就是我被困的地方。 hg out显示了10个变更集。首先是 已经在一个月前出现了。他们的数字是3341, 3342, 3345, 3346, 3349, 3356, 3360, 3365, 3366, 3368。变更集数3368是小费。

      我最近阅读了有关MQ扩展的章节。这种扩展似乎是我需要的。但问题是我在不使用MQ的情况下编写代码 扩展

      那么,我如何才能在已创建的变更集上使用MQ扩展 我可以制作一个补丁发送给项目负责人,以便他可以应用它并查看 我的变化?

      我刚发布hg qinit。下一步是什么? 发出hg qimport -r 3341给出了

      abort: revision 3341 has unmanaged children
      

      阅读这本书并进一步搜索谷歌对我没有帮助。我需要一个建议。

      PS我已经尝试过根本不使用hg和MQ:简单diff -urN old/ new/但是我 想要了解如何使用MQ。

      谢谢。

1 个答案:

答案 0 :(得分:2)

是的,不要使用MQ。它是一个并行系统,旨在使事物远离历史,更重要的是你不需要它。

你被要求提供“补丁”,而不是你工作的完整历史记录,所以我建议你以一个前后差异的形式发送它。 hg export将为您完成的所有工作(包括合并)提供一系列差异。我发现阅读和审查单个差异(在应用之前)要容易得多。但是使用diff代替普通hg diff,只知道查看跟踪文件,并且有许多其他不错的功能(包括提供更丰富元数据的--git选项)。这应该这样做:

hg up mybook
hg diff --git -r default > mywork.patch

在发送之前,请执行hg up default并应用修补程序以检查其是否正常工作而不会发生冲突。并向收件人提及您要修补的default版本。

编辑正如您可以在评论中看到的那样,@ LazyBadger是export生成的逐步修补程序的粉丝。我更喜欢单步补丁 因为我的历史通常是TMI:没有人关心我添加了一个被遗忘的文件的所有时间,或者在下一次提交中注意到一个错误并且已经修复了等等。 随便挑选。

相关问题