Как получить репликацию master-master с помощью Subversion?

StackOverflow https://stackoverflow.com/questions/148625

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Помощь!:) :)

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

Это было полезно?

Решение

Я бы порекомендовал СВК или git-SVN.

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

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

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

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

Другие советы

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

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

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

Еще одна мысль...если у вас есть как внутренние, так и внешние экземпляры SVN...что помешает им обоим одновременно выдавать один и тот же идентификатор списка изменений для разных целей?Если вы ищете децентрализованное решение, вам следует обратить внимание на ГИТ а не СВН.

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

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

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

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

VDFS configuration interface for multisite Apache SVN repos

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

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

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

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

Subversion Multisite использует уникальную технологию репликации Wandisco, чтобы немедленно синхронизировать репозитории подрывной деятельности, подключенные к широкой сети площади (WAN).Пользователи в каждом месте испытывают производительность скорости локальной сети (LAN) как для операций чтения, так и для записи.Subversion Multisite также предоставляет непрерывные возможности для резервного копирования и самовосстановления, которые автоматизируют аварийное восстановление, так что время простоя практически устраняется.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top