2010-11-26 7 views
9

Git depolarının (2) sunucular arasında otomatik olarak eşleştirilmesi için bir yöntem arıyorum, böylece üçüncü bir noktadan değiştirilebilirler.Git Sunucular 2 Sunucular arasında nasıl senkronize edilir

Durum şu şekildedir: Tüm projelerimiz için git'i çok kullanırız ve Depoların bir kısmı oldukça hızlı büyür. Halihazırda tek bir merkezi sunucumuz var ve herkes bu alana itiyor/çekiyor. Ancak bu her şey internet bağlantısından geçer ve bu nedenle en hızlı yol değildir.

Fikir: Ofise başka bir sunucu koyun ve ofis içi kullanım için orada tüm git depolarını bulun. Bu sunucunun on-line ile senkronize edilmesi gerekecektir. En iyi ihtimalle kullanıcılar, hangisinin bazı dns ayarlarıyla kullandığını bile bilmezler, bu nedenle çevrimiçi sunucu havuzlarının adresi, oradaki ağa bağlı olduğunda ofis içindeki bir bilgisayara gider.

Halihazırda benzer bir şey yapan var mı? Ya da hedefe ulaşmak için daha kolay bir yol var mı.

+0

Ofis dışındaki kişilerin itmesi gerekebiliyor mu? – robert

+0

Evet, mümkünse makul bir çaba içinde – maxigs

cevap

4

sonra kolayca SSH forced command mekanizması için uzatabilirsiniz çünkü kolayca (gitolite gibi bir çerçeve LAN repo ve WAN http repo yerinde her ikisinde de var anlamına gelir) SSH protocol ile yapılır böyle bir mechnism görecekti:

    iki repo yerel repo gerekli uzaktan biriyle yerel repo senkronize az yukarı güncel uzak bir
  • daha uzunsa
  • komutu reddetmek SYNCHRONE eğer
  • ilk onay

hooks daha karmaşıktır ile Bunu yapmak için ve tüm anda bu senkronizasyon mekanizmasını ayak uydurmak amacıyla dikkatlice sunucu tarafı kanca her türlü kurulum olması gerekir.

+0

zorla komut açıklamasına hızlı bir şekilde baktım ama bunun nasıl işe yaradığını anladığımdan emin değilim. lan-repo ile bağlantı kurduğumda zorla komutu daha sonra wan repo ile eşitlenip eşleşmeyeceğini kontrol etmeli ve (eğer gerekiyorsa yapsın) ve sadece o zaman basmanın depoya gitmesine izin verecek miydi? – maxigs

+0

@maxigs yolunda en az bir gecikme beklediğimden bu bakış açısı kullanıcı açısından nasıl görünebilir: fikir (ve gitolite, göndereceğiniz herhangi bir komutu (ssh yoluyla) içeren bir betikle kapsüllemek için Komutunuzu doğrulayın b/bu komuttan önce bir şey gerekiyorsa yürütün c/özgün komutu çalıştırın d/bu komuttan sonra bir şey gerekiyorsa çalıştır. Bu durumda, a/(doğrulama adımı), sunucu tarafındaki repo (ssh zorlamalı komutun bulunduğu yerde), itmenin başlatıldığı yerel repodan daha güncel olup olmadığını kontrol edebilir. – VonC

0

Gitolite, depoları yansıtacak bir özelliğe sahiptir. Ofisteki birini usta, diğeri de köle olarak kurabilir ve birine iterek izin verebilirsin.