Свн Репо Синхронизация - PullRequest
2 голосов
/ 11 марта 2009

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

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

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

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

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

Спасибо

Ответы [ 4 ]

3 голосов
/ 11 марта 2009

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

2 голосов
/ 21 июня 2009

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

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

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

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

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

    svk mirror 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. Для этого есть обходных путей ; Я просто сделал sudo cpan Time::Progress, чтобы получить то, что мне нужно из CPAN.

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

0 голосов
/ 11 марта 2009

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

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

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

0 голосов
/ 11 марта 2009

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

...