Переименование имени проекта репозитория SVN - PullRequest
33 голосов
/ 29 октября 2010

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

Ответы [ 5 ]

44 голосов
/ 22 января 2013

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

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

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

21 голосов
/ 29 октября 2010

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

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

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

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

РЕДАКТИРОВАТЬ

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

18 голосов
/ 29 апреля 2013

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

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

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

2 голосов
/ 31 января 2014

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

Иногда администратор может изменить «базовое местоположение» вашего хранилища - другими словами, содержимое хранилища не меняется, а основной URL-адрес, используемый для доступа к корню хранилища, меняется. Например, может измениться имя хоста, схема URL или любая часть URL, которая ведет к самому хранилищу. Вместо того, чтобы извлекать новую рабочую копию, вы можете заставить команду svn switch «перезаписать» начала всех URL-адресов в вашей рабочей копии. Используйте параметр --relocate, чтобы выполнить замену. Содержимое файла не изменяется, и хранилище не связывается. Это похоже на выполнение сценария Perl над вашей рабочей копией .svn / directory, которая запускает 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 команда, которая «перезаписывает» административные метаданные рабочей копии для ссылки на новое местоположение хранилища.

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

Второй синтаксис не требует, чтобы вы знали текущий корневой 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, чтобы отключить это поведение.

0 голосов
/ 23 марта 2017
  1. Сначала узнайте, где находится папка \Repositories, (по умолчанию C:\Repositories)

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

  3. Если вы используете eclipse, тогда откажитесь от старого расположения хранилища в SVN Repositories и перейдите к New->Repository Location...-> your new repository name. Вот и все.

...