Как сбросить один проект из репозитория SVN, который содержит несколько проектов?
Я работаю с хранилищем SVN со многими проектами. Мне нужно переместить несколько проектов из этого хранилища в отдельные репозитории, по одному для каждого проекта, сохраняя историю.
Я смог использовать svnadmin dump
, чтобы сбрасывать весь репозиторий и svnadmin load
его в другой репозиторий, но я не могу найти способ сброса только одного проекта из исходного репозитория, поэтому я могу загрузить его в новый. Это возможно? Если да, то как?
Ответы
Ответ 1
Для этого вы можете использовать утилиту svndumpfilter. В книге SVN есть хорошее объяснение о том, как это сделать.
Например, один из способов:
$ svnadmin dump /path/to/repo
| svndumpfilter include /proj > dump-file
$ svnadmin create /new/proj/repo
$ svnadmin load --ignore-uuid /new/proj/repo < dump-file
$ svn rm file:///path/to/repo/proj
Ответ 2
Просто небольшое дополнение к ответу @Avi и комментарий @Kit.
Если вы используете svndumpfilter
, вы можете потерять фиксацию, необходимую для загрузки репозитория (source).
В моем случае:
cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump
svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump
<<< Started new transaction, based on original revision 1
svnadmin: File not found: transaction '0-0', path 'trunk/project'
Решение заключалось в том, чтобы сначала создать верхний каталог trunk
.