如何从Mercurial生成一个干净的补丁?

时间:2012-05-14 09:46:38

标签: mercurial diff patch

diff命令,即使使用git选项,也包括DCS上常用的路径前缀:

--- a/file.ext
+++ b/file.ext

因此,应用此类补丁,您需要使用-p1而不是-p0。

有没有办法从Mercurial生成干净的补丁?

2 个答案:

答案 0 :(得分:1)

Mercurial不会发出-p0补丁。正如@Ringdig指出的那样,它们很少是你想要的。

答案 1 :(得分:0)

您可以调整此答案中提供的see脚本:transforming patch strip level删除第一个目录而不是添加它。

这样的事情应该有效(未经测试):

sed \
    -e 's!^--- a/!--- !' \
    -e 's!^+++ b/!+++ !' \
    < p1.patch \
    > p0.patch

假设您的“p1补丁”位于名为p1.patch的文件中,则输出将位于p0.patch