diff命令,即使使用git选项,也包括DCS上常用的路径前缀:
--- a/file.ext
+++ b/file.ext
因此,应用此类补丁,您需要使用-p1而不是-p0。
有没有办法从Mercurial生成干净的补丁?
答案 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