Слияние веток SVN - PullRequest
       11

Слияние веток SVN

2 голосов
/ 16 июля 2010

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

Теперь я готов объединить свои изменения в багажник. Я пытаюсь сделать это путем объединения диапазона ревизий, начиная с точки, которую я разветвил, и заканчивая HEAD ветви. Но когда я пытаюсь это сделать, SVN сообщает о многочисленных конфликтах деревьев. Похоже, что каждый файл, который был добавлен в транк (и объединен в мою ветку), находится в конфликте.

Я надеялся, что при слиянии периодически из ствола в мою ветвь слияние в противоположном направлении будет тривиальным. Очевидно нет. Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 16 июля 2010

Вам необходимо реинтегрировать ветку. Кроме того, когда вы объединяете ствол обратно в вашу ветку, вы должны были объединиться с предком, иначе SVN не знает, какие ревизии были объединены.

1 голос
/ 16 июля 2010

Вам необходимо реинтегрировать ветку в ствол. Начните с чистой проверки ствола, а затем вы должны объединить (или реинтегрировать, если вы используете TortoiseSVN) ветвь в ствол.

Вполне вероятно, что у вас будет несколько конфликтов во время слияния. Наличие конфликтов не означает, что есть проблема. Просто разрешите их, прежде чем отправлять обратно в багажник.

Также возможно, что вы / сервер / репозиторий используете старую версию SVN (до 1.5), в которой не было отслеживания слияний. Это может быть источником множества конфликтов, потому что SVN не будет знать обо всех ревизиях, которые вы объединили в свою ветку, и попытается объединить изменения из этих ревизий во внешнюю линию. Отслеживание слияний помогает SVN игнорировать изменения в вашей ветви, которые уже сделаны в транке.

0 голосов
/ 16 июля 2010

Предполагая, что вы используете какую-то версию Subversion, которая поддерживает отслеживание слияний (v1.5 или выше), вам понадобится магия "реинтеграция слияния".

Существует несколько видов слиянийв SVN «реинтеграция слияния» отличается от «инкрементных слияний», которые вы выполняли, чтобы поддерживать свою ветку в актуальном состоянии.Короче говоря, инкрементное слияние (которое является видом слияния по умолчанию) переносит изменения на основе ревизии за ревизией.Если вы попытаетесь выполнить одно из этих слияний при возвращении в транк, вы вернете в транк оба изменения, которые вы внесли в ветку, плюс все изменения, которые произошли в транке и были перенесены в вашу ветку.Вот почему вы видите конфликты.

Книга SVN объясняет это довольно хорошо;внимательно прочитайте этот раздел , чтобы лучше разобраться в этом.

...