Как экспортировать часть репозитория SVN с зависимостями?

Я пытаюсь перенести часть репозитория SVN с помощью svnadmin dump.

Предоставленный инструмент svndumpfilter не управляет зависимостями копирования / перемещения / переименования из каталогов, не включенных в экспорт.

Есть ли инструмент, который может управлять этими зависимостями?


person fglez    schedule 03.11.2008    source источник


Ответы (3)


Я нашел сценарий Python от Саймона Татхема под названием svndumpfilter2, который пытается справиться с простыми зависимостями (правда, я обнаружил некоторые ограничения).

Вы также можете проверить статью о его переходе на Subversion и мотивация сценария.

person fglez    schedule 04.11.2008
comment
Сейчас это старый ответ, но можете ли вы вспомнить ограничения, которые вы обнаружили с svndumpfiler2? - person Craig; 22.11.2012
comment
В основном это связано с несколькими уровнями копирования, IIRC, но мне удалось настроить сценарий под свои нужды. - person fglez; 22.11.2012

Вы имеете в виду зависимости, указанные в свойстве svn: external?

Если да, я думаю, вам следует передать svndumpfilter также пути, указанные в свойстве. Например, если ваш проект находится в http://host/project и для свойства svn: external установлено значение http://host/dependencies, вы можете сделать что-то вроде

svndumpfilter include http://host/project http://host/dependencies < total.dump > project.dump
person Davide Gualano    schedule 03.11.2008

От этой проблемы не избавиться. Если вы скопировали каталог / файл, вы должны включить оба (источник и место назначения) в svndumpfilter.

Однако вы можете проделать некоторые хитрости:

Если вы сбрасываете репозиторий не из ревизии 0, а говорите, например, от ревизии 100 вы получите новый репозиторий с исчезнувшей ревизией 1-100. Однако в вашем целевом репозитории есть все файлы / папки в ревизии 1 в качестве исходного репозитория в ревизии 100. Таким образом вы можете избавиться от версионных данных, не теряя HEAD-Revision.

Вы можете попытаться сбросить / загрузить исходный репозиторий до вашей первой копии в «плоский» репозиторий, а затем добавить в него оставшиеся дампы. Таким образом вы можете пропустить проблемную ревизию, из которой производится копирование, поскольку ваши файлы уже находятся в подходящем (целевом) каталоге.

person Peter Parker    schedule 03.11.2008