Как синхронизировать два репозитория Subversion?

У моей компании есть филиал с медленным подключением к Интернету. Наши разработчики страдают от взаимодействия с нашим центральным сервером Subversion. Можно ли настроить для них ведомое устройство/зеркало? Они будут взаимодействовать локально с сервером, и все коммиты будут автоматически синхронизированы с главным сервером.

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

Пожалуйста, никаких предложений по изменению нашей системы контроля версий.

Ответ 1

Subversion 1.5 представила прокси-поддержку, когда вы используете http для размещения своего репозитория. Разработчики могут проверить свои рабочие копии у подчиненного. Тогда все операции только для чтения (diff, log, update и т.д.) Будут использовать ведомое устройство. При совершении транзакции ведомое устройство прозрачно передает всю операцию записи в мастер.

Ответ 2

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

SVN-зеркальный путь

Вы можете использовать svn mirror, как описано в документации по книге SVN, чтобы создать зеркало только для чтения вашего основного репозитория. Ваши разработчики взаимодействуют с ближайшим к ним зеркалом. Однако пользователям подчиненного репозитория придется использовать

svn switch --relocate master_url

прежде чем они смогут совершить, и им придется помнить о том, чтобы переместить обратно на раба после того, как они будут выполнены. Это можно было бы автоматизировать с помощью обертки script вокруг команд модификации репозитория в SVN, если вы используете клиент командной строки. Имейте в виду, что операция переместить в то время как быстро добавляет немного накладных расходов. (И будьте осторожны, чтобы дублировать репозиторий uuid - см. документацию SVN.)

[Изменить - проверка документации TortoiseSVN кажется, что вы можете иметь TortoiseSVN выполнить клиентскую консоль-скрипты кликов. На этом этапе вы сможете создать pre/post commit script. Либо это, либо попробуйте посмотреть, можете ли вы использовать интерфейс автоматизации TortoiseSVN.

Способ SVK

svk - это набор скриптов Perl, которые эмулируют распределенную службу зеркалирования по SVN. Вы можете настроить его так, чтобы локальная ветвь (зеркало) делилась несколькими разработчиками. Тогда базовое использование для разработчиков будет полностью прозрачным. Вам нужно будет использовать клиент svk для сбора, сливания и starmerging. Это выполнимо, если вы можете сосредоточиться на распределенных концепциях.

git -svn way

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

Заключительные слова

Все зависит от вашей среды разработки и требуемого уровня интеграции. В зависимости от вашей IDE (и если вы можете изменить SCM), вы можете захотеть взглянуть на другие полностью распределенные SCM (подумайте Mercurial/Bazaar/Git/...), которые поддерживают распределенную разработку из коробки.

Ответ 3

Вам следует попробовать Система управления версиями SVK

SVK - это децентрализованная система управления версиями, построенная с надежной файловой системой Subversion. Он поддерживает зеркалирование репозитория, отключенную операцию, чувствительное к истории слияние и интегрируется с другими системами управления версиями, а также с популярными инструментами визуального слияния.

В этой ссылке есть текст о Использование SVK для синхронизации репозиториев SVN

Ответ 4

Если один из репозиториев полностью доступен для чтения, вы можете использовать 'svnsync', чтобы обновлять его с помощью главного репозитория. Этот инструмент часто используется в сочетании с поддержкой прокси для создания настройки ведущего ведомого.

например. Apache делает это, чтобы отразить их хранилище на разных континентах. Мастер-репозиторий находится в США, но если я получаю доступ к репозиторию из ЕС, я получаю локальное зеркало, которое работает так же хорошо, как и главный сервер.

Ответ 6

Существует коммерческое решение, которое обеспечивает истинную активную репликацию (не master-slave) репозитариев Subversion, если вам нужна безопасность производительности и данных, помимо того, что svnsync предоставляет под названием Subversion MultiSite.

Отказ от ответственности: я работаю в компании, которая делает это решение

Ответ 7

VisualSVN Server Репликация многопозиционного репозитория была разработана для этого случая.

Вы можете сохранить главный репозиторий в своем главном офисе и настроить несколько записываемых ведомых репозиториев в удаленных местах.

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

  • Репликация между ведомыми и ведущим осуществляется прозрачно и автоматически,

  • Каждый главный и ведомый репозиторий представляет собой записываемый репозиторий Subversion с пользовательской точки зрения,

  • Работает готово и может быть настроено за пару кликов через консоль консоли управления VisualSVN Server Manager.

VisualSVNServerManagerConsoleMultisite