Как перенести репозиторий SVN в другой репозиторий SVN?



есть ли простой способ скопировать каталог из одного репозитория в другой репозиторий с копированием всей истории?

723   9  

9 ответов:

самый простой способ-использовать:

svnadmin dump path/to/repos > repos.out

это создаст портативный формат для вашего репозитория (с историей) в файле repos.out. Затем вы можете использовать

svnadmin load path/to/newrepos < repos.out

чтобы загрузить свой "сброшенный" репозиторий в новый или существующий.

Глава 5. Обслуживание Репозитория - > Перенос Данных Репозитория В Другое Место есть эта заметка об использовании svnadmin dump в версии 1.7:

формат дампа репозитория Subversion описывает версионное хранилище только изменения. Он не будет нести никакой информации о незафиксированных транзакции, пользовательские блокировки на пути к файловой системе, репозиторию или серверу настройки конфигурации (включая сценарии подключения) и так далее.

как предложено в книги о Subversion:

svnadmin dump path/to/repos_src \
    | svndumpfilter include path/inside/svn/to/directory \
    | svnadmin load path/to/repos_dst

пример:

svnadmin dump /var/lib/svn/old_repo \
    | svndumpfilter include trunk/my_project/common_dir \
    | svnadmin load /var/lib/svn/new_repo

если вы не хотите историю, вы можете использовать svn export чтобы получить чистую папку без .svn папки, а потом svn import в другой репозиторий.

С историей, вам нужно будет использовать svnadmin dump. Затем вы будете использовать svndumpfilter для фильтрации только для частей или путей, которые вы хотите использовать перед использованием svnadmin load.

темы:

использовать svnsync - Зеркальное Отображение Репозитория Subversion:

svnsync является инструментом зеркального отображения удаленного репозитория Subversion. Проще говоря, это позволяет воспроизводить ревизии одного репозитория в другой.

подрывная документация для svnsync команда имеет следующее предупреждение (начиная с версии 1.7), подразумевающее, что как только некоторые другие команды SVN используются для изменения зеркального репозитория, svnsync не должно быть используется с этим конкретным зеркалом снова:

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

можно создать файл дампа с помощью svnadmin dump, затем импортировать в новый репозиторий с svnadmin load.

в Subversion версии 1.7 появилась новая команда, svnrdump который может быть использован для доступа к удаленному репозиторию и генерировать тот же формат вывода дампа, который генерируется

Я думаю, что следует заявить, что файл дампа, созданный с помощью

    svnadmin dump path/to/repos > dumpfile

может быть создан (из svn 1.7 и далее) с помощью команды

   svnrdump dump url_to_repos > dumpfile

это полезно, когда это делается с удаленного компьютера, а не с сервера.

в случае, если это помогает другим, есть svn2svn для воспроизведения наборов изменений из одного репозитория Subversion в другой:

https://github.com/tonyduckles/svn2svn

чтобы перенести репозиторий с одного сервера на другую версию, выполните следующие действия.

Шаг 1: сбросьте все версии репозитория в файл дампа. Возможно, у вас есть тысячи версий в существующем репозитории. Так что вы можете создать файл дампа, используя следующий скрипт.

dump.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin dump <old_server_repository_location > -r $i  –incremental > <dump_location>/$i.dump
done

в приведенном выше скрипте вы можете получить полный дамп старого репозитория в зависимости от доступности пространства, или вы можете взять свалка в короткий промежуток времени (т. е. от 0-5000, то от 5001-10000 и так далее).

Шаг 2: Выполните описанный выше сценарий с помощью команды ниже. В зависимости от версии ядра вам необходимо выполнить любой из следующих двух запросов.

$ bash dump.sh > stdout.sh
$ ./sh dump.sh > stdout.sh

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

Шаг 3: Проверьте, открыт ли брандмауэр для порта № 22 между старый и новый сервер. Если он не открыт, попросите администратора сделать его доступным.

Шаг 4: Теперь копируем все файлы дампа, созданные из старого репозитория SVN на новый сервер, используя следующую команду.

$ sftp xxxx@<new_server>
Connecting to <new_server>…
Password:
sftp> mput *.dump <new_server>/dump_location

В приведенной выше команде, xxxx это пользователь, который выполняет операцию. В процессе выполнения sftp вы копируете файлы дампа со старого сервера на новый сервер.

Шаг 5: Создайте новый репозиторий для новых Сервер

$ svnadmin create <new_repository>

Шаг 6: теперь используйте приведенный ниже скрипт для загрузки всех файлов дампа.

load.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin load –bypass-prop-validation <new_repository> < dump_location /$i.dump
done

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

Comments

    Ничего не найдено.