Перенос проектов между SVN хранилищами
Так исторически сложилось, что многие мои проекты, в том числе и рабочие , раскиданы по нескольким разным svn хранилищам. Вчера было решено это всё дело сложить в один репозиторий, сохранив всю историю работы. Немного погуглив, нашел решение для переноса единичного проекта.
- делаем дамп репозитория, из которого будем переносить проект.
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 на
мы получим требуемый результат. Чистота, чисто дамп...
Кстати, особенность svnadmin dump в том, что её нужно запускать локально. А если вы хотите сделать дамп чужого репозитория, или просто удаленно, не заходя на сервер, то в этом вам поможет rsvndump . Только вот он распространяется только в исходниках. Пробовал вчера его собрать на mingw . Началось все мирно rsvndump, apr, subversion, apr-util. Но когда затем потребовался sqllite (или что то еще) я плюнул. Ну его нафиг.