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 в другой:
чтобы перенести репозиторий с одного сервера на другую версию, выполните следующие действия.
Шаг 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