2009-03-11 2 views
2

Я хотел бы сохранить копию кода сторонних сторон в моем SVN-репо. (так что я могу запускать отчеты и тесты)Svn Repo Syncing

Как я могу синхронизировать определенную папку/путь из своего репо в мою?

Очевидно, что я не могу просто сделать экспорт из своего репо и совершить сделку с моим, потому что это пропустит удаление.

Дополнительные охлаждающие точки для автоматизированного решения.

svn: внешние могут использоваться, но не идеальны. Если стороннее репо было отключено, у меня не было бы доступа к коду.

Спасибо,

+0

если только svn копия поддерживается кросс-хранилищем операций ...! – UncleZeiv

ответ

3

Если код третьей стороны находится в репо SVN, вы можете использовать svn:externals свойство.

+1

Это не сохраняет его в своем репо. svn: externals - это чуть более автоматизированный способ сделать svn checkout из удаленного репо в определенном месте. –

-1

Возможно, вы должны сделать зеркало SVN с помощью какого-либо инструмента DVCS, такого как Mercurial (используя hgsubversion или hgsvn) или Git (git-svn).

0

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

Затем просто вытащите исходный репозиторий и нажмите на цель ... или что-то в этом роде.

И вы должны иметь возможность автоматизировать его с помощью сценария оболочки, выполняемого заданием cron.

2

Я делаю именно это с svk.

Есть документация на mirroring and svn repo with svk, но это не очень хорошо; возможно, это краткое описание процедуры поможет.

  1. Установите переменную окружения SVKROOT в соответствующий путь для СВК репо, если вы не хотите его в папку по умолчанию в вашем домашнем каталоге. Обратите внимание, что это будет содержать все, что вы когда-либо делали с svk, включая зеркала нескольких svn-репозиториев, поэтому он может стать довольно большим.

  2. svk init для инициализации репо. Вас спросят, хотите ли вы его инициализировать (если он еще не существует). После этого вы также можете получить сообщение об ошибке: «Команда не распознана, попробуйте/usr/bin/svk help.»; это кажется безобидной ошибкой.

  3. Настройте свои зеркала, давая путь к репо вы хотите зеркало, и пути в вашей СКАХ репо, где вы хотите разместить зеркало, например:

    СОК зеркало SV + SSH://foo.com/data/repo/head/project //mirror/foo.com/project svk mirror sv + ssh: //bar.com/data/repo/head/funstuff //mirror/bar.com/funstuff

  4. Запустить svk sync -a, чтобы синхронизировать все зеркала. Это то, что вы запускаете, когда хотите обновить свою копию до последней версии из зеркальных репозиториев.

    Если вы впервые получили сообщение об отсутствии модуля Time :: Progress, вероятно, используете последнюю версию Fedora, Ubuntu или другого дистрибутива со сломанным пакетом svk.Для этого есть workarounds; Я просто сделал sudo cpan Time::Progress, чтобы получить то, что мне нужно от CPAN.

  5. Сделайте svk co /mirror/foo.com/project, чтобы получить оформление заказа. Конечно, у вас будет полная история и все остальное, просто используя команду svk вместо команды svn.

Смежные вопросы