Как получить реплику мастер-мастер с Subversion? - PullRequest
13 голосов
/ 29 сентября 2008

Похоже, простая проблема:

  • У меня есть репозиторий SVN внутри нашего брандмауэра.
  • У меня есть репозиторий SVN за пределами нашего брандмауэра.
  • У меня есть пользователи внутри и снаружи брандмауэра. (без VPN это не вариант :( это было бы слишком просто)
  • машины внутри брандмауэра МОГУТ общаться с внешним сервером SVN. Но не иначе.
  • внешний SVN - это временная вещь - основной репо всегда будет внутри.

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

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

Я верю, что apache.org делает это, но я не могу найти документы, КАК они это делают. Есть пара продуктов, которые делают это (ну, один), но я хотел бы знать, есть ли у кого-нибудь хороший, чистый способ сделать это без них. svnsync делает это, только в одном направлении (ведущий-ведомый)

Рад, что он работает на Windows, Linux или Mac, так как у нас все они есть. Хотя Windows и Mac предпочитают.

Помощь! :):)

[обновить] после 12 месяцев возни (и в конце концов это не нужно), правильный ответ, на мой взгляд, правильный. Используйте git - имейте один репо, который тянет из SVN-A, затем нажмите на новый репозиторий git, а затем нажмите на SVN-B. Должно работать :) 1025 *

Ответы [ 8 ]

6 голосов
/ 29 сентября 2008

Я бы рекомендовал SVK или git-svn .

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

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

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

Вот расширенное руководство по SVK wiki: Использование SVKAsARepositoryMirroringSystem

3 голосов
/ 11 февраля 2015

Одной из функций Enterprise Edition сервера VisualSVN является Репликация многоузлового репозитория , которая делает именно то, что вы ищете.

Эта функция основана на технологии распределенной файловой системы (VDFS) VisualSVN, которая была разработана для обеспечения прозрачной репликации хранилища Subversion на территориально распределенных сайтах. Некоторые из примечательных особенностей VDFS:

  • Все распределенные репозитории VDFS Subversion доступны для записи,
  • VDFS обеспечивает прозрачную двунаправленную репликацию данных,
  • VDFS поддерживает правила авторизации репликации и расширенные механизмы аутентификации, такие как встроенная аутентификация Windows (NTLM / Negotiate) с безопасным шифрованием SSL / TLS.
  • Все репозитории VDFS содержат один и тот же набор данных,
  • Репликация репозитория через WAN с VDFS в 10 раз быстрее, чем репликация на основе сквозного прокси,
  • Настройка VDFS осуществляется через графический интерфейс без каких-либо сложных шагов.

Стоит отметить, что VDFS следует классической модели репликации master-slave , которая имеет значительные преимущества по сравнению с моделью репликации master-master , поскольку она больше подходит для репликации репозиториев Subversion с FSFS fs- введите бэкэнд. Технология VDFS намного надежнее решений репликации master-master для SVN.

VDFS configuration interface for multisite Apache SVN repos

3 голосов
/ 29 сентября 2008

Простота, как правило, лучший способ, и, похоже, у вас уже есть простое решение: используйте SVN-репозиторий вне брандмауэра.

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

Дайте мне знать, если я пропускаю часть ваших требований.

Еще одна мысль ... если у вас есть как внутренние, так и внешние экземпляры SVN ... что может помешать им одновременно выдавать один и тот же ID списка изменений для разных целей? Если вы ищете децентрализованное решение, вам следует обратить внимание на GIT , а не на SVN.

1 голос
/ 29 сентября 2008

Хмм ... поддерживать два репозитория в синхронизации друг с другом нетривиально, я думаю. Это будет включать в себя превращение SVN в Mercurial или Git.

0 голосов
/ 16 сентября 2012

Если вы ищете пошаговое объяснение репликации master / slave с помощью svnsync, следуйте инструкциям http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html

0 голосов
/ 03 августа 2011

Наиболее бесшовным и масштабируемым решением является репликация master / slave с использованием svnsync, которая описана в книге Subversion: http://svnbook.red -bean.com / ru / 1.7 / svn-book.html # svn.serverconfig. httpd.extra.writethruproxy

0 голосов
/ 24 сентября 2009

http://wandisco.com/subversion/multisite/

Subversion MultiSite рычаги Уникальная репликация WANdisco технология немедленной синхронизации Репозитории Subversion, связанные через глобальная сеть (WAN). Пользователи на каждый опыт местоположения скорость сети (LAN) для и операции чтения и записи. Subversion MultiSite также предоставляет непрерывное горячее резервное копирование и самовосстановление возможности, которые автоматизируют катастрофу восстановление, так что время простоя практически исключено.

0 голосов
/ 29 сентября 2008

Одна вещь, которую вы можете попробовать, - это реплицировать репо на уровне файлов. Я использую FolderShare (http://www.foldershare.com - работает на Windows и Mac) для аналогичного сценария, хотя я реплицирую его только для целей резервного копирования и не пытался подключиться с помощью SVN к реплике.

...