【发布时间】:2017-06-28 13:36:54
【问题描述】:
已对分支中的文件进行了许多更改。其中一些更改是针对现在需要在主分支上实现的功能。
如何为文件的每个修订创建一个补丁,以便我可以选择我希望将哪些更改应用于我的主分支?理想情况下,我希望每个补丁也包含修订说明以供参考。
【问题讨论】:
已对分支中的文件进行了许多更改。其中一些更改是针对现在需要在主分支上实现的功能。
如何为文件的每个修订创建一个补丁,以便我可以选择我希望将哪些更改应用于我的主分支?理想情况下,我希望每个补丁也包含修订说明以供参考。
【问题讨论】:
您可以通过在日志命令中引用该文件来获取一个文件的日志:
hg log FILENAME
您可以通过将两者都作为参数提供给日志来获取某个修订版和文件名的差异,并要求它为您提供补丁(我已将我的 hg 配置为默认使用 git 样式的补丁格式 - 也许这就是这里也需要):
hg log --patch --rev XXX FILENAME
如果您希望为每个修订版 FILENAME 更改补丁,您可以在 bash 中尝试类似
for rev in $(hg log -T"{rev}\n" FILENAME); do hg log -p -r${rev} FILENAME > FILENAME.${rev}.patch; done
它会为您提供典型的补丁,包括使用的提交消息:
$ cat FILENAME.15.patch
Änderung: 15:441bead3e0b3
Vorgänger: 7:36479da8f266
Nutzer: planetmaker <email@example.org>
Datum: Tue Feb 10 22:58:24 2015 +0100
Zusammenfassung: More boo
diff --git a/FILENAME b/FILENAME
--- a/FILENAME
+++ b/FILENAME
@@ -1,1 +1,2 @@
foo is boo!
+Even moar booo!
【讨论】: