Подтвердить что ты не робот

Переименование имени проекта репозитория SVN

Я перенес проект из CVS в SVN. Теперь мне нужно переименовать этот проект. Каким может быть наилучший способ переименовать его, сохраняя всю историю неповрежденной. Папка проекта содержит около 100 номеров C и его файлов заголовков.

4b9b3361

Ответ 1

В Subversion нет встроенного механизма для переименования репозитория.

Лучший способ сохранения целостности и истории - выполнить дамп репозитория старого репозитория, а затем повторно импортировать дамп в новый репозиторий.

Я написал сообщение об этом здесь: Как переименовать репозиторий SVN.

Вам понадобится только утилита svnadmin, а затем svnadmin создайте новый репозиторий, svnadmin dump содержимое предыдущего репозитория и наконец svnadmin import дамп в новый репозиторий, который вы создали с помощью svnadmin create.

ИЗМЕНИТЬ

Если вам нужно переименовать "проект" внутри репозитория - и по проекту я предполагаю, что вы имеете в виду каталог - тогда вам просто нужно использовать svn move. Обратите внимание, что это делается с помощью клиента svn, а не svnadmin. Синтаксис команды svn move - svn move SRC DEST, и он позволяет вам в основном преформировать переименование файла или каталога внутри вашего репозитория. Вся история должна быть сохранена для этого файла (или каталога).

Ответ 2

Чтобы переименовать репозиторий, вам нужно только переименовать его корневой каталог и сгенерировать новый UUID. Предполагая, что репозиторий находится в /var/svnroot/my_repo, вы должны запустить эти команды (как root), чтобы переименовать репозиторий:

$ mv /var/svnroot/my_repo /var/svnroot/my_new_repo
$ svnadmin setuuid /var/svnroot/my_new_repo

После этого вы можете получить к нему доступ через свой любимый протокол.

Ответ 3

Книга SVN\5. Администрирование хранилища \Перемещение и удаление репозиториев:

Данные репозитория Subversion полностью содержатся в репозитории каталог. Таким образом, вы можете переместить репозиторий Subversion на другой местоположение на диске, переименование репозитория, копирование репозитория или удаление хранилище, используя инструменты, предоставляемые вашей операционной система для управления каталогами

Переименовать обычно выполняется на том же сервере, поэтому это простое переименование/перемещение каталога репозитория. Вызов svnadmin setuuid не требуется, потому что вы не делаете копию, и UUID должны оставаться неизменными, поэтому ваш клиент может легко переместиться на новый URL-адрес репозитория.

Ответ 4

SVN 1.1 (старая книга):

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

$ svn checkout file:///tmp/repos test
A  test/a
A  test/b
…

$ mv repos newlocation
$ cd test/

$ svn update
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///tmp/repos'

$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.

SVN 1.7 (текущая книга):

svn relocate - Переместите рабочую копию, чтобы указать на другой корневой URL-адрес репозитория.

Сводка

svn relocate FROM-PREFIX TO-PREFIX [PATH...]

svn relocate TO-URL [PATH]

Описание

Иногда администратор может изменить местоположение (или видимое местоположение, с точки зрения клиента) репозитория. Содержимое репозитория не изменяется, но корневой URL-адрес репозитория. Имя хоста может измениться, поскольку репозиторий теперь обслуживается с другого компьютера. Или, возможно, схема URL-адресов изменилась, потому что теперь репозиторий обслуживается через SSL (используя https://) вместо простого HTTP. Существует много разных причин для этих типов репозиториев. Но в идеале "изменение адреса" для репозитория не должно оскорблять все рабочие копии, указывающие на то, что этот репозиторий станет навсегда непригодным для использования. И к счастью, это не так. Вместо того, чтобы заставить пользователей проверять новую рабочую копию при перемещении репозитория, Subversion предоставляет команду svn relocate, которая "перезаписывает" метаданные рабочей копии для обращения к новому местоположению репозитория.

Первый синтаксис svn relocate позволяет вам обновлять одну или несколько рабочих копий тем, что по существу сводится к обнаружению и замене в корневых URL файлах репозитория, записанных в этих рабочих копиях. Subversion заменит исходную подстроку FROM-PREFIX на строку TO-PREFIX в этих URL-адресах. Эти исходные URL-подстроки могут быть длинными или короткими, что необходимо для их разграничения. Очевидно, что для использования этой синтаксической формы вам необходимо знать как текущий корневой URL-адрес репозитория, на который указывает рабочая копия, так и новый URL-адрес этого репозитория. (Вы можете использовать информацию svn для определения первого.)

Второй синтаксис не требует, чтобы вы знали текущий корневой URL-адрес репозитория, с которым вся рабочая связь связана - только новый URL-адрес репозитория (TO-URL), на который он должен указывать. В этой синтаксической форме только одна рабочая копия может быть перемещена за раз.

<сильные > Примеры

Начните с рабочей копии, которая отражает URL локального репозитория:

$ svn info | grep URL:
URL: file:///var/svn/repos/trunk
$

В один прекрасный день администратор решает переименовать каталог репозитория на диске. Мы пропустили заметку, поэтому в следующий раз при попытке обновить рабочую копию мы увидим ошибку.

$ svn up
Updating '.':
svn: E180001: Unable to connect to a repository at URL 'file:///var/svn/repos/trunk'

После того, как администратор запустит администратор, мы узнаем о перемещении репозитория и передаем новый URL-адрес. Однако вместо проверки новой рабочей копии мы просто попросим Subversion переписать метаданные рабочей копии, чтобы указать на новое местоположение репозитория.

$ svn relocate file:///var/svn/new-repos/trunk
$

Subversion не говорит нам о том, что он сделал, но операция без ошибок - это все, что нам нужно, правильно? Наша рабочая копия снова работает для онлайн-операций.

$ svn up
Updating '.':
A    lib/new.c
M    src/code.h
M    src/headers.h
…

По умолчанию svn relocate будет перемещать любые внешние рабочие копии, вложенные в вашу рабочую копию, и попытаться также переместить эти рабочие копии. Используйте параметр --ignore-externals, чтобы отключить это поведение.

Ответ 5

  • Сначала узнайте, где находится папка \Repositories, (defaut C:\Repositories)

  • После этого переименуйте свой репозиторий, который вы хотите, внутри этой папки /Repositories. (Окна)

  • Если вы используете eclipse, отмените старое местоположение репозитория в репозиториях SVN и получите New->Repository Location...-> your new repository name. Вот оно.