2014-11-06 3 views
2

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

Итак, какой был бы лучший способ сделать это? Есть ли способ отметить конкретную git-фиксацию с уведомлением флага, который уже перенесен? Или мне просто нужно попробовать сложную схему перезагрузки?

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

+0

Думаю, вам захочется заглянуть в встроенную функцию слияния, поскольку она очень мощная. http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging –

+0

Вы пытались переустановить или объединить свою вилку, чтобы узнать, сколько конфликтов вызвано? – LeGEC

+0

@LeGEC Путь к многим, они фактически изменили стиль кода всей базы кода в два раза между моей версией и их версией: -/ –

ответ

4

Похоже, у вас есть сложное слияние вперед! Я бы посоветовал вам взглянуть на git imerge, который помогает с большими проблемами слияния, разбивая их на мелкие кусочки. Процитирую страницу проекта:

git-imerge имеет две основные цели проекта:

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

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

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

+0

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

+1

Привет @Let_Me_Be, если вы посмотрите на https://github.com/mhagger/git-imerge#simplifying-results, вы увидите, что git-imerge может использовать разрешения, которые вы ему даете, чтобы переустановить код на восходящий поток ветви, и если вилки значительно расходятся, вы вряд ли столкнетесь с серьезными конфликтами, с которыми вы не сможете работать, используя imerge, а затем git rebase. – yjo

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