【问题标题】:Create patch for series of existing changesets that were created without using MQ?为不使用 MQ 创建的一系列现有变更集创建补丁?
【发布时间】:2016-04-27 14:41:32
【问题描述】:

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

  1. 我创建了一个书签 mybook

  2. hg up mybook

  3. 写代码

3.1hg commit -m 'new functions'

  1. hg up default

  2. hg pull

  3. hg update

  4. hg up mybook

  5. hg merge default

  6. 转到第 3 步。

在我看来,这是让我保持最新状态的最简单的工作流程。一世 也只有一个 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。

谢谢。

【问题讨论】:

  • 不要将 MQ 用于此任务。使用 hg export -r REVSET 将变更集导出为补丁集
  • 而且,顺便说一句,您可以在 4-6 区域的工作流程中减少摩擦
  • 我认为@LazyBadger 意味着您可以从default 中的pullmerge 无需离开您的分支进行更新(如果您不介意在不查看新版本的情况下这样做)。

标签: mercurial patch mq mercurial-queue


【解决方案1】:

是的,不要使用 MQ。这是一个并行系统,旨在将事物排除在历史之外,更重要的是您不需要它。

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

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

在发送之前,请执行hg up default 并应用补丁以检查它是否可以正常工作而不会发生冲突。并告诉收件人您正在修补哪个版本的default

编辑: 正如您在 cmets 中看到的,@LazyBadger 是由export 生成的逐步补丁的粉丝。我更喜欢单步补丁 因为我的历史通常是 TMI:没有人关心我添加一个被遗忘的文件的所有时间,或者注意到一个错误太晚并在下一次提交中修复,等等。 任君挑选。

【讨论】:

  • 不要混用 hg exporthg archive,老兄 - 导出保存 patch-file
  • 对不起,如果这听起来有误导性。 hg export 将生成一个补丁,其中包含修订范围内每个文件和每个变更集的单独差异。因此,它包含每个受影响文件的多个差异。 hg diff 只会比较开始和最终状态,并产生一个单一的跨越补丁。
  • 我的兴趣不在于export 的输出是否可以恰当地称为补丁,而在于它是否对想要审查潜在贡献的项目负责人有用。
  • 好吧,您提到差异是对的,但无论如何 - 领导 不会 逐眼验证补丁(当然) - 它将应用于某些(水银)沙箱和出口在 this 情况下,差异在某种程度上 更健康
  • 好的,我编辑了我的答案以明确表示对此意见不同。
猜你喜欢
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多