Как переместить часть хранилища Subversion в новое, не теряя историю? - PullRequest
1 голос
/ 29 марта 2012

У меня есть хранилище Subversion, которое в настоящее время содержит код, документацию и результаты. Это становится грязным и неуправляемым, поэтому я хотел бы разделить репозитории на три.

Как я могу переместить подразделы исходного репозитория (который будет содержать только код) в новые репозитории Documentation и Deliverables без потери истории? Например:

<old_repos>\Docs
<old_repos>\Deliverables
<old_repos>\Src

... становится:

<docs_repos>
<deliverables_repos>
<src_repos>

Я видел много сообщений о перемещении папок внутри репозитория и других, в которых показано, как переместить одно целое хранилище в другое, но ничего, что подсказывает, как просто переместить подмножество. Это возможно?

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Не пробовал и не проверял лично

Вы будете использовать команды svnadmin dump, svnadmin load и svndumpfilter (команды немного в стиле Unixish)

1 Создать полный дамп исходного репо: svnadmin dump . > full.dump

2-4 Отфильтровать дамп и оставить только ревизии, связанные с нужным подкаталогом соответственно: cat full.dump | svndumpfilter include DIR-PATH --drop-empty-revs --renumber-revs --skip-missing-merge-sources --preserve-revprops > DIR-PATH.dump

5-7 Для каждого нового пустого репо: svnadmin load . --parent-dir trunk --ignore-uuid < DIR-PATH.dmp

В худшем случае новые репо получат не /trunk/*.* data-trees, а /trunk/DIR-PATH/*.*, которые легко устраняются одним большим ходом и удаляют пустой DIR-PATH после всех

PS - я только что обнаружил после написания своего текста: Как переместить одну папку из одного хранилища Subversion в другое хранилище?

1 голос
/ 29 марта 2012

Вы можете использовать svndumpfilter .Там есть инструкции в документации, хотя

  • вы не можете (в прошлый раз, когда я пытался) использовать --deltas dump - это не поддерживает.Я думаю, что --incremental был в порядке, хотя
  • редактирование путей для всех файлов обычно означает тщательное редактирование файла дампа, что является проблемой, потому что это смесь двоичного и текстового файлов.Обычно мне приходится удалять первые несколько ревизий, которые создают каталоги, и исправлять одну из них, чтобы также создавать правильные новые каталоги.

Требуется немного усилий, но я несколько раз делал это успешно.

...