Изменить 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?

4 ответов


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

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

    svn relocate svn://sub.someaddress.com.tr/project

  • сохранить с помощью /project учитывая, что фактическое содержимое вашего хранилища, вероятно, не изменится.

Примечание: svn relocate недоступно до версии 1.7 (спасибо ColinM за информацию). В более старых версиях вы бы использовали:

    svn switch --relocate OLD NEW

в моем случае (а также 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), просмотрите репозиторий таблиц и измените root и uuid значения столбцов для новых. Вы можете найти UUID нового РЕПО, выдав svn info NEW_SERVER.

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


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-адреса репозитория также включает изменение протокола, вам может потребоваться указать before и после url (кроме посмотреть здесь)

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

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

svn info | grep URL:

если вы чувствуете, как это, немного больше уверенности в себе, новый SVN РЕПО URL подключен и работает:

svn status --show-updates
svn diff

Если вы хотите совершить новое пустое РЕПО, вы можете проверить новое пустое РЕПО и совершить новое удаленное РЕПО.
chekout новое пустое РЕПО не удалит ваши локальные файлы.
попробуйте это: например, url удаленного РЕПО:https://example.com/SVNTest cd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"