2008-09-27 3 views
57

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

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

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

+0

Я скептически, как проксирование может улучшить ситуацию. Возможно, фиксация занимает меньше времени для POV пользователя, но данные все равно должны быть переданы ведущему устройству, и это по-прежнему занимает примерно столько же пропускной способности сети. Таким образом, обновление мастера происходит так же медленно, даже если оно появляется быстрее для пользователя. Из-за этого асинхронного поведения мастер может начать отставать. – aseq 2012-08-09 00:16:47

ответ

27

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

6

Вы должны попробовать The SVK version control system

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

На этой ссылке есть текст о Using SVK to Synchronize SVN Repositories

49

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

СВН-зеркало способ

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

СВН переключатель --relocate master_url

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

[Edit - Проверка TortoiseSVN документации, кажется, что вы можете иметь TortoiseSVN execute hook scripts client side. На этом этапе вы сможете создать сценарий pre/post commit. Либо это, либо попытайтесь увидеть, можете ли вы использовать TortoiseSVN automation interface, чтобы сделать это].

СВК путь

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

мерзавец-Svn путь

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

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

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

+0

Можно ли создать клиентский скрипт TortoiseSVN для автоматического перемещения этого места? – neves 2008-09-27 07:12:35

+4

Этот ответ имеет больше голосов, чем мой избранный. Я думаю, что решение svnsync лучше, потому что коммиты происходят прозрачно на сервере. Не нужно переезжать. Отличное удобство использования. Пользователи просто со временем найдут странное сообщение об ошибке, когда зеркало не будет полностью синхронизировано. Обычно им просто нужно подождать пару минут, и все в порядке. – neves 2011-07-12 21:21:17

+0

Ссылка на главу в svn redbook, документирующую прошивку прошивки: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy – 2013-06-13 06:27:57

2

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

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

1

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

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

1

VisualSVN сервера Multisite Repository Replication был разработан для этого случая.

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

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

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

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

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

VisualSVNServerManagerConsoleMultisite