2011-02-08 2 views
2

Рассмотрим следующую ситуацию:Как объединить BUG FIX ветку в ствол и освободить ветвь

  • Развитие в основном делается в багажнике.
  • Филиалы используются при исправлении сложных ошибок или разработке новых (нестабильных) функций.
    Обычно эти ветви затем сливаются в багажник после завершения разработки.
  • 1 ветвь используется как текущая релизная ветвь (например, в настоящее время «R-1.0»).
  • Метки используются для выпуска (будет «R-1.0.0»).

Теперь сложная ошибка, которая находится в багажнике, а также в текущих 1.0.0 релизе должен быть исправлен:

  1. филиала «BG-1» из ствола будет создан.
  2. Ошибка будет исправлена ​​в этой ветке.
    В то же время развитие будет продолжаться в багажнике.

Как вы продолжаете реинтегрировать ветку в багажник и «R-1.0» сейчас?

  • Объединить багажник в «BG1», затем перевести «BG1» в багажник, а затем в «R-1.0».
    => Это не может быть решением, так как «R-1.0» получит все, что было разработано в багажнике с момента выпуска 1.0, что не является целью.
  • Попробуйте реинтегрировать «BG1» в багажник, а затем в «R-1.0», не сливая багажник.
    => Это также не может работать, поскольку другие изменения, которые не были частью релиза 1.0, уже являются частью ветви «BG1».

Есть ли какие-либо решения этой проблемы?
Единственное решение, которое я вижу, - это запустить «BG1» из «R-1.0», а не в багажник. Если да, значит ли это, что для каждой ветви исправления ошибок разработчик должен найти самую старую поддерживаемую версию, содержащую ошибку и ветвь из этой ветви релиза?

Update:
Практика делает все развитие и из ствола возник из this answer by "Jim T", которая является концепция мне очень нравится.

ответ

6

Я бы предложил объединить багажник в BG1, а затем реинтегрировать BG1 в багажник. Затем вы можете объединить ряд изменений в R-1.0. Конец, в котором вы реинтегрируете BG1 в соединительную линию, должен содержать только исправления, поэтому вы можете объединить это с R-1.0. Или вы можете объединить конкретные коммиты в BG1, которые исправили вашу ошибку.

В зависимости от того, насколько соединительная линия изменилась с R-1.0, вам, возможно, придется вручную отредактировать R-1.0, прежде чем совершать изменения, применимые к старому коду. Таков характер сохранения старых релизов.

+0

[+1] Я провел несколько тестов и получил тот же результат, что и вы. Кажется, проще всего интегрировать BG1 в магистраль, а затем объединить только эту ревизию в R-1.0. Позвольте мне посмотреть, придут ли другие предложения, если нет, я приму ваш ответ. – Marc

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