在Mercurial中生成补丁

时间:2011-10-23 14:08:12

标签: mercurial

我在手册中已经找到了,但我无法为最后一次提交生成补丁。 我试过了

hg qnew patch_name

但它只用

文件
# HG changeset patch
# Parent a6a8e225d16ff5970a8926ee8d24272a1c099f9c

我也试过

hg export tip

但它没有做任何事情。我完全承诺了改变。

如何使用上次提交生成补丁文件?

6 个答案:

答案 0 :(得分:59)

执行此操作的命令是export

$ hg export -o FILE -r REV

它不需要重定向,因此可以在任何平台/ shell上正常工作。

答案 1 :(得分:22)

您的hg export tip是最好的方式,基于hg diffhg log的答案只是同一版本的较小版本。键入hg export tip时,您看到/得到的确切内容是什么? hg log -p -r tip的输出显示了什么?

变更集tip只是意味着“最近到达我的存储库的变更集”,这个概念并不像您想象的那样有用,因为hg pullhg tag全部也创建变更集。如果你真的想要你提交的最后一件事,你需要更精确的revspec

答案 2 :(得分:16)

像这样:

hg diff -r tip > tip.patch

答案 3 :(得分:6)

您可以使用此命令:

hg log -r tip -p > tip.patch

这将为该修订生成补丁。

答案 4 :(得分:1)

如果您想转换最新提交到补丁文件,请使用

hg qimport -r tip

这将用应用的MQ补丁文件替换最顶层的常规提交。

答案 5 :(得分:0)

使用" mq扩展"生成补丁在mercurial中,您可以按照以下给出的步骤操作。这将使用mercurial创建一个补丁:

1)启用mq扩展:将以下行添加到hgrc文件并保存。

[extensions]
mq =

2)使用mq扩展创建补丁:要使用mq扩展创建补丁,您可以执行以下操作。

hg qnew -e -m "comment you want to enter" bug_name.patch

在上面的命令中, -e 标志用于编辑补丁, -m 标志用于在补丁中添加消息。

3)更新补丁:要更新补丁,可以在应用补丁时使用以下命令。

hg qrefresh