Subversion объединяет diff или просто обновляет ревизию неизмененных файлов - PullRequest
2 голосов
/ 04 мая 2009

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

Причина, по которой я спрашиваю, состоит в том, что для слияния SVN просто берет diff магистрали от последнего слияния к голове и применяет ее к ветви.

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

Это особенно актуально при обновлении большого количества PDF-файлов.

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

Из выходных данных Subversion кажется, что он применяет различия.

Ответы [ 3 ]

1 голос
/ 04 мая 2009

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

AFAIK, применение diff не требует значительного дополнительного пространства в subversion. Если разность небольшая, она должна занимать столько же места, сколько просто обновление ревизии.

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

http://svnbook.red -bean.com / о / 1,5 / svn.branchmerge.basicmerging.html

0 голосов
/ 04 мая 2009

Из файла Subversion 1.6 ИЗМЕНЕНИЯ:

идентичные файлы совместно используют место в хранилище (выпуск № 2286)

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

0 голосов
/ 04 мая 2009

Я думаю, что вы используете Subversion, вероятно, неправильно (я делал это раньше, чтобы). Что вам нужно сделать, это объединить ряд ревизий в свой ствол. Пример:

Rev: 100 
/trunk

(сделать ветку)

Rev:101 
/trunk (r100) 
/branch (r101)

(много изменений)

Rev: 200 
/trunk (r100)
/branch (r200)

Теперь вам нужно сгенерировать все различия между r100 и r200 и применить их к транку. Объединение немного вводит в заблуждение (, как указано в документации ). Ваш вариант использования является довольно распространенным сценарием, который описан в документации .

Я не думаю, что есть лучший способ объединить ствол-> ветвь или ветвь-> ствол. Это очень зависит от того, как вы хотите работать и ваш сценарий. Судя по всему, ветвь функции будет более нестабильной. Имеет смысл объединиться с транком, как только вы завершите эту функцию. Чтобы ограничить конфликты при слиянии обратно в магистраль, вы можете непрерывно сливаться из ствола-> ветки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...