Ошибка переключателя SVN - это не то же самое хранилище

Я недавно переместил сервер 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 ответов

Решение

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

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

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

Мой лучший способ сделать перемещение 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с..

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

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

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

Вам нужно использовать опцию --relocate:

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

см. svnbook для более подробной информации.

Другие вопросы по тегам