Способ 1 (ручное исправление)
Если вы просто хотите, чтобы функция facebook-xmpp
была доступна в audium-1.5
, вы можете
- объединить кончик
audium-1.4
в 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-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