Как объединить ответвление обратно в транк в SVN со всей историей коммитов? Я знаю, что в Git я могу использовать
merge -squash
. Есть ли какая-нибудь эквивалентная команда в SVN? Я использую SVN 1.6.
В Subversion 1.5 или более поздней версии слияние записывается в вашей локальной рабочей копии в свойстве svn:mergeinfo. Так что эта информация не потеряется.
Вы можете увидеть объединенные ревизии, если используете svn log -g
вместо обычного svn log
.
Обычные слияния выполняются так же, как
svn merge -rREV1:REV2 svn://server/branch my_trunk_wc
Но если вы используете ветвь, иногда удобнее использовать реинтеграционное слияние. В этом случае вы должны сначала объединить все изменения ствола в ветку, используя что-то вроде
svn merge svn://server/trunk my_branch_wc
(это объединяет все, что еще не объединено)
И после того, как вы зафиксируете это изменение в ветке, вы можете использовать
svn merge --reintegrate svn://server/branch my_trunk_wc
Чтобы переместить все изменяется как один коммит. (После этой операции следует удалить ветку)
Вы можете сохранить каждую ревизию как diff, а затем зафиксировать каждую на вершине ствола. Это обычно называется «трансплантацией», и существуют различные инструменты, позволяющие сделать это автоматически.
Я немного устарел с объединением, но разве это не поможет?
svn merge -rREV1:REV2 svn://server/branch my_trunk_wc
См .:
svn merge --help
Похоже, вы хотите:
Я думаю, что это поддерживается базовой архитектурой SVN. Но я не знаю, есть ли клиенты, которые его предоставляют (хотя svnmucc сделает это для нескольких команд cp
, mv
, rm
). Если вы не хотите провести больше исследований, чем я (что не займет много времени), или написать свой собственный клиент, который может заставить библиотеки SVN делать это (что может быть сложно, но все же выполнимо); тогда я думаю, вам придется пожертвовать одним из 2. и 3. выше.
(Если вы пожертвуете 3, вы могли бы выгрузить репозиторий сразу после этого и взломать файл дампа, чтобы использовать только одну ревизию, но я не думаю, что стоит рисковать, просто чтобы иметь чуть более простую историю ревизий ...)