Ошибка коммутатора SVN - это не тот же репозиторий - PullRequest
76 голосов
/ 29 мая 2009

Я недавно переместил сервер SVN и теперь пытаюсь переместить рабочие копии со своего компьютера на новый сервер. Но я получаю странную ошибку. я делаю:

svn switch http://99.99.99.new/svn/company/project/trunk/web

но я получаю

svn: 'http://99.99.99.old/svn/company/project/trunk/web'
is not the same repository as
'http://99.99.99.new/svn/company/project'

перемещение было выполнено с помощью dump и import ... и корень репо находится на http://99.99.99.new/svn/company/project

Ребята, у вас есть идеи, что может быть не так? большое спасибо

Ответы [ 5 ]

130 голосов
/ 29 мая 2009

Попробуйте использовать

svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web

Как отметил Спорино в комментариях, начиная с Subversion 1.7, есть отдельная команда relocate:

svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
23 голосов
/ 24 июня 2009

Кроме того, в TortoiseSVN есть опция «Переместить», которую следует использовать в подобных ситуациях (вместо опции «Переключение»).

7 голосов
/ 14 ноября 2009

Мой лучший способ перемещения SVN - это:

svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \
                      new_url_or_repository

Таким образом, используя правильный старый URL из команды svn info, вы наверняка не введете неправильный, который является одной из распространенных ошибок.

Если все правильно, вам будет предложено ввести данные аутентификации для нового местоположения, если они отличаются.

После выполнения команды обязательно дважды проверьте, что изменение было применено, посмотрев на параметр URL, выдав

svn info

После перемещения обновите свою рабочую копию, чтобы убедиться, что все в порядке:

svn update

Мой 2с ..

4 голосов
/ 29 мая 2009

Используйте параметр командной строки relocate для команды switch.

svn switch документация

Иногда администратор может изменить «базовое местоположение» вашего хранилища - другими словами, содержимое хранилища не меняется, а основной URL-адрес, используемый для доступа к корню хранилища, меняется. Например, имя хоста может измениться, или схема URL, или, возможно, просто путь, ведущий к хранилищу. Вместо того, чтобы извлекать новую рабочую копию, вы можете заставить команду svn switch «перезаписать» начала всех URL-адресов в вашей рабочей копии. Используйте команду --relocate, чтобы выполнить замену. Содержимое файла не изменяется, и хранилище не связывается. Это похоже на выполнение сценария perl над вашей рабочей копией .svn / directory, которая запускает s / OldRoot / NewRoot /.

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

Вам необходимо использовать параметр --relocate:

svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web

Подробнее см. svnbook .

...