Изменить URL-адрес репозитория SVN

Моя текущая структура SVN:

Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)

Но наш проект (следовательно, служба SVN) будет работать над sub.someaddress.com.tr вместо someaddress.com.tr (someaddress.com.tr скоро будет перенаправлен в другое место).

Поскольку это сервер разработки, я не мог быть уверен в том, что делать. Нужно ли использовать svn switch или svn switch --relocate? Кроме того, мне нужно будет переключить svn root someaddress.com.tr или ветвь проекта someaddress.com.tr/project?

Ответ 1

Учитывая, что сервер Subversion Apache будет перемещен в этот новый псевдоним DNS: sub.someaddress.com.tr:

  • С Subversion 1.7 или выше используйте svn relocate. Перемещение используется при изменении местоположения сервера SVN. switch используется, только если вы хотите изменить локальную рабочую копию на другую ветку или другой путь. Если вы используете TortoiseSVN, вы можете следовать инструкциям из TortoiseSVN Manual. Если вы используете интерфейс командной строки SVN, обратитесь к

Ответ 2

В моем случае команда svn relocate (а также svn switch --relocate) по какой-то причине потерпела неудачу (возможно, репо не было перемещено правильно или что-то еще). Я столкнулся с этой ошибкой:

$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'

Я не хотел повторно загружать весь репозиторий, поэтому я нашел обходное решение. Он работал в моем случае, но, как правило, я могу себе представить, что многие вещи могут сломаться (так что либо создайте резервную копию своей рабочей копии, либо будьте готовы повторно проверить весь репо, если что-то пойдет не так).

Адрес репо и его UUID сохраняются в файле базы данных .svn/wc.db SQLite в вашей рабочей копии. Просто откройте базу данных (например, в SQLite Browser), просмотрите таблицу REPOSITORY и измените значения столбца root и uuid на новые. Вы можете найти UUID нового репо, выпустив svn info NEW_SERVER.

Опять же, рассматривайте это как последний метод.

Ответ 3

Grepping URL до и после может дать вам некоторое спокойствие:

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)

И проверьте свою версию (чтобы быть > 1.7), чтобы гарантировать, что svn relocate - это правильная вещь:

svn --version

Наконец, добавив выше, если ваш URL-адрес репозитория также включает изменение протокола, вам может потребоваться указать до и после URL (также см. здесь)

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal

Все в одной строке, конечно. После этого получите хорошее чувство, что все прошло гладко:

svn info | grep URL:

Если вам это нравится, немного больше уверенности в себе, новый URL-адрес репозитория svn связан и работает:

svn status --show-updates
svn diff