#svn #branching-and-merging
#svn #ветвление и слияние
Вопрос:
Я вижу очень похожие вопросы, задаваемые ранее, но, похоже, не могу найти тот, который является точным ответом на мой. Извините, если это дубликат.
Я работаю над веткой функций, зафиксировал 10 ревизий, и время от времени я объединял ревизии на магистрали в свою ветку функций. Теперь функция готова и работает, и я хочу объединить свои изменения обратно в магистраль. На графике это
trunk --------------------^
?
feat v-----v-----v----?
Моей первой мыслью было выполнить прямое слияние всей ветки, в результате чего я объединяю изменения на feat, начиная с момента, когда ветка была разветвлена, до HEAD. Но проблема, которую я вижу, заключается в том, что промежуточные ревизии, которые были объединены из магистрали (включая несколько добавлений и удалений файлов), вызывают конфликты при повторном объединении обратно в магистраль.
Мне интересно, является ли объединение всей ветки правильным способом сделать это, несмотря на конфликты? Или это была просто плохая идея выполнять промежуточные слияния из магистрали в подвиг; хотя это было несколько необходимо?
Спасибо!
Ответ №1:
Способ решения этой проблемы, с которым я работал ранее, заключается в том, что непосредственно перед слиянием обратно в магистраль вы выполняете одну последнюю перебазировку. Это означает, что единственными изменениями, которые будут внесены в магистраль, будут те, которые произошли в вашей ветке, а также, поскольку вы только что перебазировали, все должно пройти гладко.
- Перенесите последние изменения из магистрали в свою ветку.
- Исправьте конфликты, сделайте компиляцию приложения и т. Д.
- Объедините вашу ветку в магистраль.
Ответ №2:
Весь метод называется в Subversion «Реинтегрировать ветку». Вы должны заметить, что после реинтеграции вам следует выбросить свою ветку (локальную копию и ветку в репозитории Subversion), просто чтобы убедиться, что она больше не используется. Документация SVN red book объясняет в примере, какие шаги предпринять (такие же, как описано @Daemin).