Зеркального просто: у вас есть один сервер «мастер» и один или более "подчиненные" серверы. Рабы получают обновления только от мастера; к остальным странам мира они в лучшем случае доступны только для чтения.
На следующих рисунках каждая коробка (A, B, C, ...) является репо. Главный сервер для репо окрашен в красный цвет, ведомые - зеленым. Пользователь нажимает на репо на главном сервере (красный), а главный сервер - после того, как пользователь нажимает успешное нажатие, затем выполняет git push -mirror для ведомых устройств. Стрелки показывают это зеркальное нажатие.
Первое изображение показывает, какое зеркало гитолита раньше напоминало длинное (ранее v2.1, на самом деле). Существует только один главный сервер; все остальные рабы. Каждое подчиненное зеркало отражает все репозиции, которые несет мастер , не больше и не меньше.
Это просто понять и управлять ими, и, возможно, на самом деле хорошо для многих небольших сайтов.Зеркала более "горячего" ожидания чем-нибудь еще.
Но когда у вас есть 4000+ разработчиков на 500 репозиториях, использующих 25 серверов в 9 городах, этот единственный сервер, как правило, становится напряженным. Особенно, если вы понимаете, что многие проекты имеют очень локализованные команды разработки . Например, если большинство разработчиков для проекта в городе X, с, возможно, несколько в городе Y, то с главного сервера в городе Z является ... неоптимальным :-)
И так, в течение приблизительно 3 лет, gitolite могли бы сделать это:
Вы можете легко увидеть различия в этом сценарии, но вот более полное описание того, что gitolite можно сделать:
Разные мастера и наборы рабов для разных РЕПО.
Это позволяет делать такие вещи, как:
использовать сервер ближе к большинству своих разработчиков как мастера для что Repo. Отразить репо только на некоторых серверах. Имеют репозиции, что являются исключительно локальными для сервера (не отражены вообще). Нажимайте на подчиненное устройство по требованию или через cron (помогает справиться с пропускной способностью или связностью ограничений). Все это возможно, отражается ли зеркало gitolite-admin - то есть все серверы имеют то же самое gitolite-admin repo или нет.
Толкается к подчиненному устройству, которое можно трансформировать в реальный мастер.
Ваши разработчики не должны беспокоиться о том, где находится мастер репо - они просто записывают в их локальное зеркало для всех репозиториев, даже если их локальное зеркало является лишь ведомым для некоторых.
Почему бы вам просто не использовать один и тот же кровавый сервер? Вы хотите, чтобы что-либо подтолкнуло к любому из серверов, чтобы автоматически было перенаправлено всем остальным? Или это односторонняя улица? – psusi
Каждый из серверов делает разные вещи и имеет разные базы кода (на самом деле используются совершенно разные языки, некоторый код устаревшего кода, некоторый современный код), поэтому каждый сервер нуждается в репо в своем собственном праве. сервер d1 действительно действует как единственная точка для разработчиков, чтобы получить последний код для любого проекта, над которым они работают ... надеюсь, что это поможет объяснить контекст –
Также единственным открытым сервером является d1, на котором p-серверы не предназначены для доступа если это возможно. Я могу решить вопрос, если нужно ... –