Оказалось все просто как всегда.
Сначала скидываем репозиторий в dump file.
#svnadmin dump /home/svn/repo/ > /tmp/mysvn.dump
Т.е. svnadmin dump выплевывает dumpfile-formatted строки в stdout, который перенаправляется в наш файл /tmp/mysvn.dump
На другой машине
#scp login@host:/tmp/mysvn.dump /tmp
#svnadmin create /new/repo/path
#svnadmin load /new/repo/path < /tmp/mysvn.dump
Копируем при помощи scp файл себе локально, затем создаем новый репозиторий при помощи svnadmin create , далее командой svnadmin load, которая как раз читает из stdin dumpfile-formatted строки, переносим сдампленные данные.
Хотя в последнее время все чаще смотрю на mercurial, и даже начинаю использовать, пока нравится, но интересно посмотреть на это когда буду работать не один. В случае hg перенос был бы обычным бранчем, который он умеет делать через ssh (Как я думаю, могу и ошибаться).
12 comments:
Спасибо. Заметка очень помогла.
Не за что. Рад что хоть чем то помог.
Тоже спасибо =) Стоит отметить, что дамп "выплевывается" довольно большим куском текста. В моем случае 328 ревизий сдампились почти в 540 Мб файлик.
Тоже не за что, учту про размер, хотя лично я уже перешел на bzr. Гораздо удобнее, хотя целиком его еще не освоил.
Спасибо! На основе вашего поста вообще сделал одну комманду: http://alexwinner.blogspot.com/2010/10/svn.html
Прикольно. :)
Если на другой машине уже создан репозитарий в нем лежат несколько проектов. непотрет ли команда
svnadmin load /new/repo/path < /tmp/mysvn.dump существующие проекты в этом репозитарии?
Фактически необходимо обьединить 2 разных репозитария с разных машин.
Не могу ответить, уже давно ушел с svn. Советую сначала провести небольшой тест на левых репозиториях, и если все пройдет удачно, сдампить основной перед слиянием чтобы не потерять :)
Вот легкое гугление что показывает
http://ru.w3support.net/index.php?db=so&id=267256
Прочитал ваш пост по поводу переноса SVN сервера. Поправьте меня если я неправильно перечислю своди действия.
Сначала делаю дамп svnadmin dump D:\SVN\svnroot > D:\svn.dump
Дальше на новом сервере создаю новый репозиторий svnadmin create D:\SVN\svnroot
Дальше на новом сервере загружаю дамп со старого сервера, в репозиторий svnadmin load D:\SVN\svnroot < D:\svn.dump
Если все правильно, то подскажите пожалуйста, дело в том что в репозитории старого SVN сервера структура папок совсем другая нежели в новом после восстановления. Например в старом репозитории папки с 4 - проэктами есть, а после восстановления дампа на новый есть только одна папка svnroot в которой есть папка DB куда весь дамп и распаковался, почему не восстановилась иерархия папок? Или так и должно было восстановится? Может что то неправильно делаю? Как проверить? Ведь в папке ДБ только какие то файлы и нет исходников!! Прошу подсказки и помощи! С ув.
Я не знаю как перенаправление файлов в виндовой консоли работает. Посмотрю сегодня вечером дома. Тогда и отвечу. Если все еще надо будет пишите в жаббер zadoev at gmail dot com
Дошел до дома перечитал пост внимательно.
На самом деле у вас все сделано правильно только вы немножко запутались.
1. Есть физическая структура репозитория, то где реально хранятся данные. Т.е. вот например команда svnadmin create D:\SVN\svnroot создает всю необходимую инфраструктуру для хранения файлов.
2. Есть сервер который предоставляет интерфейс для работы с этой структурой по какому то протоколу. Обычно используют http сервер + плагин к нему. Вроде бы в svn можно обойтись без сервера работая напрямую клиентом через файловую систему. Если это так то попробуйте
svn checkout file:///d:/svn/svnroot
d:/workcopy
И посмотрите уже обычным файловым менеджером d:/workcopy
В качестве сервера можно еще по моему воспользоваться
svnserve --daemon --root d:\svn\
И сделать уже svn checkout svn://localhost/svnroot d:\workcopy2
Вот ссылочка, похоже на правду.
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ru/tsvn-serversetup-svnserve.html
Ну а про апач для доступа к svn можно нагуглить еще легче
3. Есть клиент, который по протоколу описанному в п.2 взаимодействует с сервером (например tortoisesvn, или просто консольная команда svn)
Далее по порядку, если вы будете разглядывать физическую структуру репозитория эксплорером, или фаром то вы не увидите реальной структуры репозитория. Для этого вам понадобится сервер работающий с репозиторием + клиент. Простейший вариант использования например под windows будет например.
Хм что то часть комментария потерлась.
В общем поставьте tortoisesvn, и попробуйте в качестве источника указать папку с вашим d:\svn\svnroot и нажать что нибудь вроде browse.
Post a Comment