- делаем дамп репозитория, из которого будем переносить проект.
svnadmin dump /var/svn/repositories/repoA > repoA.dump
- затем нужно выделить из дампа нужный нам проект с именем project2
cat ./repoA.dump | svndumpfilter include project2 > project2.dump
- теперь заливаем дамп нашего проекта в новый репозиторий
svnadmin load /var/svn/repositories/repoB < project2.dump
И вот вроде все прекрасно. Но, если открыть журнал репозитория, то там будет много пустых ревизий с комментарием "This is an empty revision for padding.". Т.е. из-за не совпадения номеров ревизий в новом репозитории и в старом, идет выравнивание за счет создание таких ревизий. Это меня очень не устраивало. Столько мусора в журнале. Гугл что то ничего внятного сказать не мог, кроме как сделать дамп нового репозитория, в текстовом редакторе убрать эти пустышки. Справка на офф сайте Subversion по svndumpfilter совсем никакая.
Как оказалось все есть в встроенной справке в svndumpfilter. Исправив команду из пункта 2 на
cat ./repoA.dump | svndumpfilter include project2 --renumber-revs --drop-empty-revs > project2.dumpмы получим требуемый результат. Чистота, чисто дамп....
Кстати, особенность svnadmin dump в том, что её нужно запускать локально. А если вы хотите сделать дамп чужого репозитория, или просто удаленно, не заходя на сервер, то в этом вам поможет rsvndump . Только вот он распространяется только в исходниках. Пробовал вчера его собрать на mingw . Началось все мирно rsvndump, apr, subversion, apr-util. Но когда затем потребовался sqllite (или что то еще) я плюнул. Ну его нафиг.
Для дампа удаленного репозитория можно сделать его зеркало утилитой svnsync.
ОтветитьУдалитьCначала говорим
svnsync init _локальный_репозиторий_ _удаленный_репозиторий_
затем
svnsync sync _локальный_репозиторий_