как объединить изменения в ветке объектов, в которой уже есть изменения из магистрали

#svn #branching-and-merging

#svn #ветвление и слияние

Вопрос:

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

Я работаю над веткой функций, зафиксировал 10 ревизий, и время от времени я объединял ревизии на магистрали в свою ветку функций. Теперь функция готова и работает, и я хочу объединить свои изменения обратно в магистраль. На графике это

 trunk --------------------^
                      ?
 feat  v-----v-----v----?
  

Моей первой мыслью было выполнить прямое слияние всей ветки, в результате чего я объединяю изменения на feat, начиная с момента, когда ветка была разветвлена, до HEAD. Но проблема, которую я вижу, заключается в том, что промежуточные ревизии, которые были объединены из магистрали (включая несколько добавлений и удалений файлов), вызывают конфликты при повторном объединении обратно в магистраль.

Мне интересно, является ли объединение всей ветки правильным способом сделать это, несмотря на конфликты? Или это была просто плохая идея выполнять промежуточные слияния из магистрали в подвиг; хотя это было несколько необходимо?

Спасибо!

Ответ №1:

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

  • Перенесите последние изменения из магистрали в свою ветку.
  • Исправьте конфликты, сделайте компиляцию приложения и т. Д.
  • Объедините вашу ветку в магистраль.

Ответ №2:

Весь метод называется в Subversion «Реинтегрировать ветку». Вы должны заметить, что после реинтеграции вам следует выбросить свою ветку (локальную копию и ветку в репозитории Subversion), просто чтобы убедиться, что она больше не используется. Документация SVN red book объясняет в примере, какие шаги предпринять (такие же, как описано @Daemin).