Subversion курица и яйцо проблема - PullRequest
1 голос
/ 21 сентября 2010

У меня есть проект SVN (1.6.12), содержащий магистраль и одну ветвь. Я пытаюсь узнать, как работает слияние.

project
+ trunk (14)
+ branches
  + test-branch (14)

Цифры в скобках являются номерами редакций. Я выполняю слияние из транка в тестовую ветку, используя команды "cd branches/test-branch; svn merge svn+ssh://.../trunk" и зафиксируйте изменения нажатием "svn commit -m 'Merged trunk'". Моя структура каталогов теперь выглядит так:

project
+ trunk (14)
+ branches
  + test-branch (15)

Затем я пытаюсь выполнить слияние между стволом и тестовой веткой: "cd trunk; svn merge --reintegrate svn+ssh://.../branches/test-branch". SVN жалуется, что транк должен быть в редакции 15. Я делаю «svn update», и структура каталогов выглядит следующим образом:

project
+ trunk (15)
+ branches
  + test-branch (15)

Cool! Готов к реинтеграции. Я пытаюсь "svn merge --reintegrate svn+ssh://.../branches/test-branch" снова. Теперь SVN жалуется, что мне нужно объединить все изменения соединительных линий в ветку перед реинтеграцией. Ствол находится в 15, но тестовая ветвь слилась только через 14.

Как мне решить это? Если я сливаюсь в ветку и затем фиксирую, ветвь будет в 16. Я попытался использовать "svn switch" на транке, но я получаю те же ошибки.

Причина, по которой хранилище находится в 14, заключается в том, что я продолжаю пиление между слияниями ствола и тестовой ветви. Одно из определений безумия - повторение одного и того же процесса и ожидание другого результата: -).

Спасибо.

1 Ответ

3 голосов
/ 21 сентября 2010

Похоже, у вас есть проверка над ветками и тегами, теперь вы должны работать.

Чтобы исправить это, убедитесь, что у вас есть одна рабочая копия только транка:

svn co <server>/svn/repos/trunk

Если вы хотите создать ветку из этого, вы должны сделать копию на стороне сервера (в противном случае она создаст копию вашей рабочей копии в эту ветку, вы этого не хотите):

svn copy <server>/svn/repos/trunk <server>/svn/repos/branches/test-branch

Теперь вы можете переключить свою рабочую копию, чтобы выполнить некоторую работу в ветке:

svn switch <server>/svn/repos/branches/test-branch

Теперь вы можете либо объединить изменения из ветви в ствол, либо реинтегрировать ветку. После реинтеграции вы должны удалить ветвь (команда должна быть выполнена один раз, в конце ветки см. svnbook для получения дополнительной информации)

Для этого сначала переключитесь обратно на транк:

svn switch <server>/svn/repos/trunk

А затем либо слить ревизию:

svn merge -c <revnumber> ^/branches/test-branch

или реинтегрировать филиал:

svn merge --reintegrate ^/branches/test-branch
svn delete <repos>/svn/repos/branches/test-branch -m "Delete branch"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...