В настоящее время я ищу лучший способ настроить зеркало SVN. В настоящее время я вижу три возможности со своими недостатками:
- Имейте SVN post-commit-Hook, который блокирует и синхронизирует через svnsync. Проблема здесь заключается в том, что фиксация блокируется, пока данные не будут переданы в зеркало.
- Имейте SVN post-commit-Hook, который не блокирует и синхронизирует через svnsync. Здесь я вижу следующую, более тонкую проблему: представьте, что кто-то проверяет большой файл, а кто-то вскоре после этого проверяет небольшой файл. Поскольку фиксация неблокирующая, два процесса svnsync могут работать одновременно, и маленький файл может перегнать BIG-файл на пути к зеркалу (это кажется очень критичным по времени и маловероятным, хотя в принципе возможно). Их пересмотр поменял бы.
- Синхронизируйте каждые пятнадцать минут с cron-заданием. Та же проблема, если фиксация занимает больше 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 из удаленного репозитория ведет себя детерминистически. Он не может применять наборы изменений не по порядку. Таким образом, единственной проблемой, с которой вы сталкиваетесь при использовании удаленного репозитория, является величина задержки из-за распространения набора изменений.
источник