我是git用户和Mozilla志愿者。在Firefox开发中,他们使用Mercurial而不是git,我有一些问题需要了解它是如何工作的。
通常,在处理Firefox错误时,我必须上传最终补丁的先前版本以获得一些反馈或评论。然后,当我想修改某些内容并上传新补丁时,我没有一种简单的方法来生成补丁,包括我之前补丁中的更改以及我所做的新闻更改。
是否知道如何将之前补丁中的更改与我在该补丁后所做的更改合并?
答案 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”更强大)。