【发布时间】:2012-05-14 09:46:37
【问题描述】:
diff 命令,即使使用 git 选项,也包含 DCS 上常用的路径前缀:
--- a/file.ext
+++ b/file.ext
因此,应用此类补丁您应该需要使用 -p1 而不是 -p0。
有没有办法从 Mercurial 生成干净的补丁?
【问题讨论】:
-
几乎每个人都使用 -p1 补丁。您认为拥有 -p0 补丁的优势是什么?
diff 命令,即使使用 git 选项,也包含 DCS 上常用的路径前缀:
--- a/file.ext
+++ b/file.ext
因此,应用此类补丁您应该需要使用 -p1 而不是 -p0。
有没有办法从 Mercurial 生成干净的补丁?
【问题讨论】:
Mercurial 不会发出 -p0 补丁。正如@Ringdig 指出的那样,它们很少是你想要的。
【讨论】:
您可以修改此答案中给出的查看脚本:transforming patch strip level 以删除第一个目录而不是添加它。
这样的东西应该可以工作(未经测试):
sed \
-e 's!^--- a/!--- !' \
-e 's!^+++ b/!+++ !' \
< p1.patch \
> p0.patch
假设您的“p1 补丁”在名为 p1.patch 的文件中,则输出将在 p0.patch 中
【讨论】: