Назад |
Перейти на главную страницу
Лучший способ создать SVN-зеркало?
В настоящее время я ищу лучший способ настроить зеркало SVN. В настоящее время я вижу три возможности, каждая из которых имеет свои недостатки:
- Имейте SVN post-commit-Hook, который блокирует и синхронизируется через svnsync. Проблема здесь, очевидно, в том, что фиксация блокируется до тех пор, пока данные не будут переданы в зеркало.
- Имейте SVN post-commit-Hook, который не блокирует и синхронизируется через svnsync. Здесь я вижу следующую, более тонкую проблему: представьте, что кто-то регистрирует БОЛЬШОЙ файл, а кто-то другой вскоре после этого регистрирует небольшой файл. Поскольку фиксация является неблокирующей, два процесса svnsync могут работать одновременно, и небольшой файл может обогнать БОЛЬШОЙ файл на пути к зеркалу (это кажется очень критичным по времени и маловероятным, хотя в принципе возможно). Их ревизия поменяется местами.
- Синхронизируйте каждые пятнадцать минут с помощью cron-job. Та же проблема, если фиксация занимает больше 15 минут и, очевидно, это задержка.
Я забыл о возможности? Я что-то не так понял? Любые идеи? Уже спасибо!
Пожалуй, стоит отметить, что вторую возможность предлагают разные сайты. Например. видеть http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsync
Вы можете попробовать подход, аналогичный тому, который мы используем в Atlassian.
https://www.atlassian.com/blog/archives/subversion_replication_at_atla?_ga=2.217251286.1933127788.1517539727-1159165484.1517539727
отказ от ответственности: В настоящее время я являюсь сотрудником Atlassian, но не участвовал во внедрении этого решения (только поддерживал его)
Как я сказал выше в комментарии, svnsync, запущенный из удаленного репозитория, ведет себя детерминированно. Он не может применять наборы изменений не по порядку. Таким образом, единственная проблема, с которой вы сталкиваетесь при использовании удаленного репозитория, - это задержка из-за распространения набора изменений.