方法一(手动补丁)
如果您只希望该facebook-xmpp
功能在 中可用audium-1.5
,您可以
- 合并
audium-1.4
into的尖端facebook-xmpp
,然后
audium-1.4
在和的提示facebook-xmpp
之间创建差异
- 尝试将该补丁应用到 adium-1.5 的尖端。
这应该可行,但新补丁与原始开发历史断开了连接。
--------o---o <- tip of audium-1.4
\ \ \
\ o---o <- tip of facebook-xmpp (all audium-1.4 changes merged in)
\
o-------o <- tip of audium-1.5 (apply patch here)
基本上这些命令应该这样做:
$ hg up facebook-xmpp
$ hg merge audium-1.4
$ hg commit -m "Merge audium-1.4 into facebook-xmpp"
$ hg diff -r audium-1.4 -r facebook-xmpp > fbx.patch # facebook-only changes
$ hg up audium-1.5
$ hg import fbx.patch # good luck
方法2(选择性合并)
另一种更尊重历史图表的解决方案是直接合并facebook-xmpp
到audium-1.5
,同时使用用作默认合并工具的合并工具配置internal:local
(以阻止合并工具弹出 1000 次),但会定期合并任何facebook-xmpp
相关的文件(如果您知道哪些文件与其功能相关)。然后,在提交合并之前,还原所有与 facebook 无关的文件。
更新:这是第二个解决方案的一些示例说明。假设facebook-xmpp
分支创建了一些新文件fb-<something>.c
,并更改了现有文件foo.c
和bar.c
(您从 diff 之间获取这些文件,facebook-xmpp
并且它的最新合并与audium-1.4
)。合并时facebook-xmpp
,audium-1.5
使用以下合并工具配置:
$ hg up audium-1.5
$ hg --config ui.merge=internal:local \
--config merge-patterns.fb-*.c=internal:merge \
--config merge-patterns.foo.c=internal:merge \
--config merge-patterns.bar.c=internal:merge \
merge facebook-xmpp
第一个合并配置确保audium-1.5
更改通常保留在audium-1.4
和audium-1.5
. 其他配置选项确保对于facebook-xmpp
分支触及的任何文件执行常规合并,可能存在需要手动解决的冲突。例如,如果foo.c
引发冲突,请运行
$ hg resolve foo.c
使用您最喜欢的手动合并工具解决冲突。最后,您必须提交合并,同时不提交任何源自audium-1.4
. 只需提交以下facebook-xmpp
内容:
$ hg ci -I "fb-*.c" -I foo.c -I bar.c
$ hg up -C # get rid of remaining new files from audium-1.4