创建一个补丁,包括hg中先前补丁的更改

时间:2014-04-05 14:02:00

标签: version-control mercurial mozilla

我是git用户和Mozilla志愿者。在Firefox开发中,他们使用Mercurial而不是git,我有一些问题需要了解它是如何工作的。

通常,在处理Firefox错误时,我必须上传最终补丁的先前版本以获得一些反馈或评论。然后,当我想修改某些内容并上传新补丁时,我没有一种简单的方法来生成补丁,包括我之前补丁中的更改以及我所做的新闻更改。

是否知道如何将之前补丁中的更改与我在该补丁后所做的更改合并?

2 个答案:

答案 0 :(得分:2)

根据您的问题很难理解您的repo的状态,以及您是使用mq还是简单提交,但假设您总是在本地存储库中提交更改,您可以在多个更改集上使用diff命令

hg diff -r10:15

结果将是从修订版10到修订版15的所有更改的串联。

另一种选择是使用货架合并您的更改。可以通过未提交的更改导入货架中的更改,允许您将它们组合在一起。

答案 1 :(得分:2)

你已经得到了Vince的一些好建议。因此,让我添加一些关于如何将更改合并到Mercurial的现有提交中的内容。我认为这会有所帮助,因为它听起来像是将您的更改作为单个补丁提交。

如果是这样,那么我建议你只使用hg commit --amend根据评论者的反馈继续修改提交。

或者,您可以自由地使用hg commit创建多个提交,然后将折叠成一个(相当于使用git commit和以后壁球提交git rebase -i)。在Mercurial中,历史编辑是使用恰当命名的histedit extension完成的。您可以通过添加

来启用它
[extensions]
histedit =

到您的~/.hgrc文件。然后运行

$ hg histedit your-first-commit

开始编辑以your-first-commit开头的历史记录。您可以在此处使用修订号,变更集ID或任何其他标识符。使用像.^^这样的revset看起来很熟悉,因为它选择Git中的两个最后一次提交(除了revset比Git称之为“treeish”更强大)。