2014-02-17 3 views
1

Я поддерживаю большой репозиторий git с 50 000 файлами. Отделение развития магистральной сети называется «развиваться». У меня есть филиал под названием «функция», который работал почти независимо в течение 5 месяцев. Невозможно слиться с «развиваться» из-за сложности работы, которая, но теперь она почти завершена, она хочет пересинхронизировать с «развитием».Как разбить большое слияние с конфликтами на более управляемые куски?

Как правило, это означает, что совершение объединения происходит из «источника/развития» в «функцию», фиксируя конфликты, проверяя, совершая и толкая. но в этой точке слияния очень много конфликтов. Я посчитал ~ 4000 сложенных изменений и ~ 450 несмешанных изменений. Некоторые из этих конфликтов достаточно тривиальны (например, файлы .gitignore и т. Д.), Но многие из них являются существенными перезаписываниями и трудно разрешены.

Кроме того, эти конфликты пересекаются в разных областях программного обеспечения. Разработчики из каждого домена должны будут разрешать конфликты в своих областях. Потребуется несколько дней хотя бы согласованных усилий по устранению конфликтов и их совершению.

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

Моя основная мысль заключается в том, что «функция» может сливаться с некоторыми промежуточными тегами внутри «разработки», например. у нас есть метки выпуска «a», «b», «c», «d» в течение последних 5 месяцев. Поэтому, если они сливаются до «a», а затем «b» и т. Д., Каждое слияние будет менее сложным, однако может быть больше конфликтов по всем.

Есть ли другие вещи, которые я мог бы попробовать?

+0

Это больше нацелено на слияние одного человека, но ['git imerge'] (https://github.com/mhagger/git-imerge) должно многое помочь в подобном случае. – torek

ответ

1

Ваша идея слияния с промежуточными тегами - это, вероятно, лучшее, что вы можете достичь. Вы можете получить столько (или более) конфликтов, но по большей части они должны быть меньше и, следовательно, легче слить.

Однако ... если проблема заключается в том, что у вас есть массовые конфликты, вызванные оптовой перепиской, мало шансов на легкое разрешение конфликтов. Даже выполнение объединений за один раз (например, подход git imerge) не может иметь дело с массивными переписываниями.

+0

Я не знаю, поможет ли она мне, но я могу поиграть с git-imerge, чтобы узнать, помогает ли она мне в любом случае - я думаю, что количество фиксаций в обеих ветвях может означать, что это не подходит, но играть в любом случае стоит. – locka

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