




Нет, ветка еще жива, но на тот момент она такая же, как и ствол. Если вы продолжаете развиваться в ветке, вы можете позже повторно объединиться с основной веткой.
Только логи разные. Журнал ветки будет более подробным, например, в нем будет указан истинный автор.
Пожалуйста, см. Ответ Пини Резника и статью, на которую ссылаются в нем, о том, почему вам следует нет продолжать использовать ветку (даже если это технически возможно).
Серьезно, не делай этого. Это причинит вам мир боли. Удалите ветку, создайте заново. Я пришлю вам запечатанную банку моих слез горя двухнедельной давности, если вы мне не верите.
Вы можете выполнять слияние из ветки в магистраль или из магистрали в ветку столько раз, сколько захотите.
Когда вы выполняете слияние, вы указываете цель. Вы можете объединить различия TreeA и TreeB с TreeC, если хотите. Как предполагает Крис, ваш вопрос не имеет особого смысла. Если вы объедините свою ветку со стволом, ветка останется нетронутой. Если в дальнейшем ветка не понадобится, ее можно удалить.
Вы можете продолжать разработку в ветке, вам понадобится функция отслеживание слияния, которая есть в Subversion 1.5, это означает, что дополнительные слияния из ветки включают только новые изменения.
Как все уже здесь сказали: ветка не мертва, и ее выполнение может продолжаться нормально.
Иногда вы хотите убить ветку после слияния. Единственное надежное решение - удалить ветку. Обратной стороной является то, что тогда сложнее снова найти ветку, если вы хотите взглянуть на нее, скажем, по историческим причинам. Таким образом, многие люди оставляют «важные» ветки лежать без дела и соглашаются не менять их. Я хотел бы, чтобы был способ пометить ветку как мертвую / только для чтения, чтобы никто не мог зафиксировать ее до дальнейшего уведомления.
Свн МВ ^ / ветки / фу ^ / ветки / .dead / фу
Несколько советов по объединению изменений обратно, если кто-то вносит изменения в ветку несколько раз (до 1.5): Помните, в какой ревизии вы выполняли слияние! Либо запишите где-нибудь номера ревизий, или же (что проще) сделать бирку. (Вы, конечно, можете узнать это позже, но это PITA.)
Пример:
У вас есть такой макет репозитория:
/your_project
/trunk
/branches
/tags
Допустим, это веб-приложение, и вы запланировали его выпуск. Вы должны создать тег и из него (или из ствола) ветку, в которой вы исправляете ошибки:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
Поступая таким образом, вы можете интегрировать новые функции в магистраль. Все исправления будут происходить только в ветке с исправлениями ошибок, и перед каждым выпуском вы делаете тег для текущей версии (теперь из ветки с исправлениями).
Предположим, вы исправили изрядное количество ошибок и выпустили их на рабочий сервер, и вам отчаянно нужна одна из этих функций в текущей магистрали:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
Теперь вы можете просто интегрировать изменения между 1.0.0 и 1.0.2 в свою магистраль (при условии, что вы находитесь в своей рабочей копии):
svn merge http://rep/your_project/tag/1.0.0 http://rep/your_project/tag/1.0.2 .
Вот о чем следует помнить. Вы уже объединили изменения между 1.0.0 и 1.0.2 в стволе. Предположим, в текущем производственном выпуске есть больше изменений:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
/1.0.3
/1.0.4
Теперь вы готовы выпустить новую версию из транка, но последние изменения ваших исправлений все еще отсутствуют:
svn merge http://rep/your_project/tag/1.0.2 http://rep/your_project/tag/1.0.4 .
Теперь у вас есть изменения все, объединенные в ваш ствол, и вы можете сделать свой релиз (не забудьте сначала протестировать его).
/your_project
/trunk
/branches
/1.0.0-bugfixes
/1.1.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
/1.0.3
/1.0.4
/1.1.0
Вы можете сделать это технически, ваша ветка не мертва и не отключена, но не рекомендуется выполнять слияние из ветки в магистраль после реинтеграции.
Вы можете найти полное обсуждение причины этого здесь: Subversion слияние реинтегрировать
По сути, в нем говорится, что можно снова объединить ваши изменения в ствол, но поскольку реинтеграция вынуждает вас выполнять слияние из ствола в ветку до операции реинтеграции, вы столкнетесь с отражающим / циклическим слиянием, что очень проблематично в Subversion 1.5. .
Согласно статье, рекомендуется удалить реинтегрированную ветку сразу после реинтеграции и вместо нее создать новую с тем же (или другим) именем.
Это известное поведение Subversion, которое будет исправлено в будущей версии (возможно, в 1.6).
Кто-нибудь знает, была ли решена проблема реинтеграции в Subversion 1.6?
Я обратился к svn v1.6 в stackoverflow.com/questions/3309602. Краткая версия: да, вы можете реинтегрироваться несколько раз. :)
Пини, ваша ссылка на «Subversion merge reintegrate» кажется неработающей или, по крайней мере, требует некоторой аутентификации для совместной работы. Вы знаете, можно ли получить доступ к статье в другом месте без аутентификации?
Я думаю, что это оригинальная статья: blogs.collab.net/subversion/2008/07/subversion-merg, и это предыдущее обсуждение: svn.haxx.se/dev/archive-2007-11/0729.shtml
Голосование против, потому что ответ больше не актуален.
После реинтеграции из ветки в ствол вы должны сделать одно из двух:
Удалите свою ветку. Это самый простой способ, но он затрудняет просмотр истории ветки.
Скажите своей ветке не объединять коммит реинтеграции. Если вы реинтегрируетесь в магистраль и зафиксируете ее как ревизию X, вы можете запустить эту команду в своей ветке: svn merge --record-only -c X url-to-trunk. Однако вам не следует этого делать, если вы внесли какие-либо изменения в рамках фиксации, кроме самого слияния. Любые другие изменения никогда не вернутся в вашу ветку.
Фактически, вам нужно выполнить слияние --record-only из ствола в вашу ветку ревизии, созданной коммитом --reintegrate:
$ cd trunk
$ svn merge --reintegrate ^my-branch
$ svn commit
Committed revision 555.
# This revision is ^^^^ important
И теперь вы записываете это
$ cd my-branch
$ svn merge --record-only -c 555 ^trunk
$ svn commit
Вы счастливы держать ветку сейчас
Более подробная информация находится в Глава 4. Ветвление и слияние, расширенное слияние.
Ответ устарел.
Прежде всего, вам следует обновить клиент и сервер Subversion, если вы все еще используете Subversion 1.7 или более раннюю версию. Нет причин использовать очень старые выпуски Subversion. По состоянию на 2016 год текущая версия - Subversion 1.9. SVN 1.8 теперь также поддерживается и все еще получает исправления ошибок.
Проблема, о которой вы спрашиваете, была решена в Subversion 1.8. Начиная с SVN 1.8, опция --reintegrate была устарел. Reintegrate слияния теперь выполняются автоматически. См. Примечания к выпуску Subversion 1.8 запись, связанная с улучшением.
Прочтите SVNBook 1.8 | Реинтеграция ветки:
If you choose not to delete your branch after reintegrating it to the trunk you may continue to perform sync merges from the trunk and then reintegrate the branch again. If you do this, only the changes made on your branch after the first reintegrate are merged to the trunk.
...
Only Subversion 1.8 supports this reuse of a feature branch. Earlier versions require some special handling before a feature branch can be reintegrated more than once. See the earlier version of this chapter for more information: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate
Думаю, вам следует пересмотреть принятый ответ, потому что он больше не соответствует действительности. Проблема не существует в современных клиентах Subversion.