2012-02-07 2 views
-5

Как слияние в ранее отвергнутой идее из той же отрасли, работа в различных системах контроля версий? Какая поддержка для этого?Слияние с предком текущей фиксации

Вот моя образованная догадка - это точное резюме?

Git и централизованные VCS: предположительно, вы вернули фиксацию, которую хотите объединить. Таким образом, вы будете буквально пытаться слиться с предком текущей фиксации. Я не пробовал это, но я не думаю, что он будет слишком хорошо поддержан. Я предполагаю, что вы могли бы сделать трехстороннее слияние с соответствующим предком (метафорическая «точка ветвления» в ретроспективе) фиксации, чтобы объединиться (которую вы должны были бы идентифицировать, потому что ее не было бы) но поддержит ли VCS это или вам придется сделать это самостоятельно?

Mercurial, используя закладки (или используя анонимное ветвление аналогично закладкам): Если вы использовали этот подход прилежно, вы бы «разворачивали курс» и разветвлялись от предка старой фиксации в момент времени когда вы ранее отклонили его. Поэтому фиксация, даже если она была первоначально сделана на этой ветке, теперь не находится на этой ветке (потому что закладки динамичны, не являются неизменными, а потому, что вы меняете курс), поэтому проблем нет. Объединитесь!

Darcs, если между головкой и старым фиксатором нет меток: в то время как в darcs он выглядит случайным взглядом, как будто у вас есть прямая линия фиксации, то, что вы на самом деле имеете, - это график зависимости между первым фиксацией или самый последний тег и голова (что совсем не очевидно, и AFAIK до сих пор нет инструмента для визуализации этого!). Поэтому, если darcs думает, что ваш старый фиксат не зависит от текущей головы (что, вероятно, вполне вероятно, потому что вы вернули старый фиксатор), они невидимо разделены ветвями и могут быть слиты довольно счастливо. Если дарс думает, что старая фиксация зависит от головы, тогда эта ситуация, по-видимому, похожа на случай git, хотя я не думаю, что кто-то полностью понимает теорию патчей, кроме, может быть, Дэвида Раунди.

Darcs, если есть тег тем временем: я думаю, что это будет похоже на git, потому что тег связывает все невидимые головы вместе и делает одну голову, которая зависит от всех из них (возможно, это одна из самые легкие для понимания аспекты теории патчей darcs)

Сноска: Для краткости я упомянул о «старой фиксации» повсюду, хотя ранее отвергнутая идея могла, конечно, быть длинной строкой коммитов.

ответ

1

С Git идея состоит в том, чтобы создать ветку, начиная с первой из старых коммитов, которую вы хотите изолировать, а затем cherry-pick те старые фиксации на вашей новой ветке.

Как только у вас есть изолированные в своей ветке, вы можете объединить его с любой другой веткой, которую хотите.

+0

Это звучит довольно простой подход - спасибо. (Но разве вы не подразумеваете, что родитель первого из старых коммитов?) Но я все еще думаю, что способ, которым я описал Mercurial, немного лучше, потому что вы можете сказать: «Эта ветка больше не является хозяином, мы идя на пост-hoc, описывают его как ветвь экспериментальной функции ». Я предполагаю, что это вопрос вкуса, и в любом случае, если вы строго соблюдаете методологию ветки и исправления ошибок, эта проблема не должна возникать с какой-либо VCS, по крайней мере, таким простым способом, который я описал. Тем не менее, такая методология довольно тяжелая. –

+0

@RobinGreen: после сбора вишни эти коммиты больше не являются частью главной ветки. И с последней версией Git вы можете описать, для чего предназначена эта новая ветка: http://stackoverflow.com/a/8858853/6309 – VonC

Смежные вопросы