Назад | Перейти на главную страницу

Как периодически копировать репозиторий SVN без потери целевых тегов и веток?

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

Предыстория: наш подрядчик просто фиксирует ствол, а он отказывается (давайте оставим это техническим) для создания тегов для версии каждой новой библиотеки (чтобы мы могли не отставать от управления изменениями).

Поэтому мы хотим каждый день импортировать их библиотеку в нашу магистраль и создавать теги и ветви в соответствии с нашими политиками.

У кого-нибудь такое случалось раньше?

В вопросе SO есть много правдоподобных решений Как синхронизировать два репозитория Subversion.

Вариант, который, похоже, может относиться к вам, предполагает использование СВК который по сути представляет собой децентрализованную версию svn.

Хотя это довольно необычно, я вам верю должен уметь делать это с помощью svnadmin.

В репозитории исполнителя можно запустить следующее:

svnadmin dump --incremental -r <LOWER REVISION>:<UPPER REVISION> /path/to/bad_repo > dumpfile

затем в вашем репозитории:

svnadmin load --parent contractors_stuff/ /path/to/your/repository < dumpfile

Это будет постепенно добавлять изменения из репозитория подрядчика в contractors_stuff каталог в вашем реальном репозитории. Как я уже сказал, теоретически это должно работать, но это определенно не предназначение этой функции. В непроизводственной системе определенно требуется тестирование, и оно, вероятно, сломается, если вы внесете изменения в эту часть своего реального репозитория.

В идеале вы должны сказать своему подрядчику, чтобы тот собрался и установил закон.

Альтернативным техническим решением было бы использование другой системы контроля версий, такой как Mercurial, Git или другой DCVS, которая лучше поддерживала бы такой рабочий процесс.