Я несколько раз объединял Subversion / TortoiseSVN вот так:

Метод А:

  • 1) Меняю ствол и фиксирую.

  • 2) Вношу другие изменения в ветку и фиксирую.

  • 3) В рабочей копии из транка: Я сливаюсь из ветки с помощью TortoiseSVN «Объединить ряд ревизий».

  • 4) Затем я фиксирую ствол и удаляю ветку.

Однако TortoiseSVN-manual рекомендует вместо 3) и 4) следующее :

Метод Б:

  • 3 *) В рабочей копии из ветки: Объедините изменения из ствола, используя TortoiseSVN «Объединить диапазон ревизий».

  • 4 *) Зафиксируйте ветку, включая изменения в стволе.

  • 5 *) В рабочей копии из транка: Объедините изменения из ветки, используя TortoiseSVN «Реинтегрировать ветку».

  • 6 *) Зафиксируйте ствол и удалите ветку.

Я считаю A намного проще и не нашел причины, почему мне не следует так делать.

Каковы аргументы в пользу метода B или A при слиянии из ветки обратно в магистраль?

7
Ole Lynge 13 Июн 2009 в 23:34
Только что обновил свой ответ, чтобы ответить на ваш комментарий.
 – 
VonC
15 Июн 2009 в 00:48

2 ответа

Лучший ответ

Перед обратным слиянием вызывается « перебазирование »: вы «перебазируете» (или обновляете) свою локальную ветвь с эволюциями ствола перед обратным слиянием этой локальной ветки с стволом.

Это позволяет медленное разрешение слияния внутри вашей «ветки» с возможными промежуточными фиксациями.
Затем, когда все будет готово, вы можете выполнить тривиальное слияние обратно в ствол.
Таким образом, вам не нужно откладывать коммиты только потому, что вы выполняете слияние на стволе (поскольку на стволе должны быть разрешены только стабильные коммиты).

Считаете ли вы вредным использование подхода «А»?

Нет, если слияние тривиальное, с предсказуемым результатом. В этом случае подход B был бы пустой тратой времени, дополнительным слиянием, которое не требуется (и вы всегда должны стремиться делать как можно меньше слияний: каждая из этих операций может быть подвержена ошибкам)

Но если результат не определен заранее, то окончательно рекомендуется подход «B», который позволяет вам изучить результат слияния в вашей собственной ветке, прежде чем воздействовать на «ствол».

Оба подхода полезны, не следует стремиться применять только один или только другой, а тот, который наиболее приспособлен к данной ситуации.

11
VonC 15 Июн 2009 в 00:48
1
Спасибо за ответ. Считаете ли вы вредным использование подхода «А»?
 – 
Ole Lynge
15 Июн 2009 в 00:35

Что касается слияния диапазона ревизий по сравнению с повторной интеграцией ветки :

Следуя методу B, вы получите два вида коммитов в ветке:

  1. Изменения, уникальные для ветки
  2. Изменения магистрали выбираются из магистрали путем последовательного слияния диапазона ревизий

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

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

0
Pawel Furmaniak 28 Ноя 2013 в 17:30