Постоянно синхронизировать git зеркала
У меня есть несколько сайтов, которые используют Drupal, у меня есть несколько серверов, live, dev1, dev2 ...
Репо кодовой базы Drupal имеет большой размер (112 Мб), поэтому я стремлюсь максимально использовать возможности жестких ссылок git, чтобы каждый раз, когда я добавлял сайт, он не дублировал это.
Так, скажем, на живом сервере у меня есть голое главное репо, и все мои сайты являются его клонами, каждый из которых использует свою ветвь. Это здорово на одном сервере, используются жесткие ссылки, это быстро и эффективно.
Но на моих серверах разработки они обычно все клонируются из основного репо, что означает, что два сайта на одном компьютере не могут использовать жесткие ссылки для экономии места.
То, что я хотел бы сделать, это настроить зеркало чистого репо на каждом из моих серверов разработки, а затем клонировать его.
dev1$ git clone --mirror live:master-bare-repo dev1-mirror-repo
dev1$ git clone -b site1 dev1-mirror-repo site1
dev1$ git clone -b site2 dev1-mirror-repo site2
Пока все хорошо. Но я хочу, чтобы зеркала всегда были синхронизированы. Так что я использовалкрюк после получения на зеркало dev1 ', чтобы сделатьgit push --mirror origin
, Теперь, если site1 на dev1 pusches фиксирует, они волшебным образом передаются в master-bare-repo.
But что если я внесу изменения вlive сервер, а что толкать? Я не могу настроитьpost-receive
крюк, чтобы подтолкнуть к другим (и), потому что это предположительно сработаетtheir post-receive
крючки, которые в конечном итоге в рекурсии?
Есть ли какой-нибудь умный способ обойти это?