2011-08-03 15 views
5

Korzystamy z git dla projektu z wieloma witrynami i zarówno repo, jak i zespół znacznie się rozrosły. Dlatego zdalne strony cierpią. Chciałbym dodać nowe serwery git do zdalnych stron, aby zmniejszyć obciążenie naszego serwera git i przyspieszyć pobieranie. Jednak nie jestem pewien, jak zachować synchronizację. Czy istnieje sposób na atomową replikację serwerów git? A jeśli nie jakieś inne sugestie?replikacja serwera git

Odpowiedz

3

Możesz mieć główne "repozytorium", a wiele zdalnych, tylko do odczytu, z tego pobieraj rep. Z kolei użytkownicy zdaliby od nich. To dałoby większą prędkość pobierania z odległych stron. Przesyłki będą nadal takie same, ale wydaje się, że głównym problemem jest prędkość pobierania.

+0

Myślałem o tym samym. Jak jednak uniknąć sytuacji, w której commit jest przeciwko poleceniu z serwera tylko do odczytu, który nie jest aktualny? Wydaje mi się, że może to powodować pewne problemy (scalanie/rywalizacja itp.). –

+2

Pchnięcie zakończy się niepowodzeniem, a użytkownik będzie musiał ponownie pobrać i scalić lub ponownie ustawić i ponowić próbę. Zachęcaj do dobrych, czystych i częstych zobowiązań, a to nigdy nie będzie dla ciebie problemem. Jeśli wszyscy pracują cały dzień od porannego szarpnięcia i wykonują jeden końcowy "czas, by wrócić do domu", a oni wszyscy pchają to w prawo, gdy gwizd wieje, rywalizacja i dodatkowa praca generowana tam są tylko symptomy. :) – Dustin

+1

Ten sam problem mógł wystąpić, jeśli wyciągnąłeś go z _central_ repo i ktoś popełnił commit po tym, jak go wyciągnąłeś. Możesz łatwo ustawić hak lub cron, które sprawią, że repliki _satellite_ nie będą nigdy więcej niż kilka minut za _central_ repo – Andy

1

Nie można replikować atomowo. Mam nadzieję, że nie o to ci chodzi.

Napisałem gitmirror do automatycznego wyzwalania zdalnej replikacji opartej na ściąganiu na zmianę repozytorium. Wymaga to odrobiny konfiguracji, ale mam mnóstwo rzeczy przychodzących przez github do tego (i kilka, które nie używają github).

+0

, co właściwie znaczyłem atomowo. Jednak gitmirror może rozwiązać drugą część mojego problemu, który był odbiciem lustrzanym. –

+0

Atomowo jest całkiem dobrze niekompatybilny z globalnie rozproszonym systemem z dużą ilością ruchomych części. Jest to również niepożądane. Celem rozproszonego systemu kontroli rewizji jest umożliwienie działania tego rodzaju rzeczy nawet wtedy, gdy nie ma żadnego połączenia. – Dustin

Powiązane problemy