2012-07-16 17 views
7

Mam zdalne repozytorium git z dużą historią i wolnym kanałem połączenia. Gdzie są niektórzy użytkownicy lokalni, a powolne push/pull po dużych zobowiązaniach lub klonowanie od zera dla nowych użytkowników to duże problemy. Chcę stworzyć lokalne zwierciadło tego. Lokalne zmiany muszą zostać zatwierdzone dla lokalnego repozytorium i zsynchronizowane ze zdalnym w tle. Rozumiem, że ten problem jest popyt, ale nie znalazłem jeszcze rozwiązania (nie jestem administratorem zdalnego repo, po prostu próbuję uprościć pracę lokalną z nim).Git lokalne lustro

+0

Ten poprzedni wpis pomoże Ci uzyskać zwierciadło zdalnego repo http://stackoverflow.com/questions/3959924/whats-the-difference-between-git-clone-mirror-and-git-clone-bare –

+1

Czy tylko twoi lokalni użytkownicy popełniają powolne zdalne repozytorium, czy też inni ludzie wykonują pracę gdzie indziej? –

+0

@honk Tak. Użytkownicy lokalni wykonujący 99% pracy, zdalni użytkownicy potrzebują dostępu tylko do odczytu (lub z bardzo rzadkimi zatwierdzeniami). Myślę, że prędkość zdalnej lokalnej synchronizacji w tle będzie odpowiednia dla zdalnych użytkowników, myślę, że muszą mieć opóźnienie, jeśli synchronizacja jeszcze się nie zakończyła. – exbluesbreaker

Odpowiedz

3

Ponieważ piszesz w komentarzach, że ludzie odpowiedzialni za powolne połączenie będą wykonywać większość pracy, sugerowałbym, aby skonfigurować powolną zdalną witrynę, aby była lustrem lokalnego repo, z którym się zaangażowałeś.

Najpierw upewnij gołe klon powolnego pilota na lokalnym serwerze

$ git clone --bare git://slow/repo.git 

Ty mieszkańcy powinni teraz popełnić tylko do tego klonu, a nie powolnego pilocie.

następnie skonfigurować crona lub coś podobnego do pchania zmian w lokalnym repo do powolnego miejscu z

$ git push origin --mirror 

Korzystając --mirror powiedzieć git push wszystkie oddziały i tagi.

+0

Dzięki! Testuję to na moje testowe repozytorium github i działa. Pełny klon prawdziwego zdalnego repo zajmuje 20 godzin lub więcej i stosuję to rozwiązanie w najbliższej przyszłości. – exbluesbreaker

+0

Stwierdziłem, że to rozwiązanie spowoduje upuszczenie wszystkich zmian dokonanych na zdalnym repo, bez dostępu przez lokalny serwer lustrzany. Czy istnieje sposób scalenia zmian? Zobowiązania do zdalnego repo są rzadkością, ale nie chcę stracić takich zobowiązań. Na przykład. po raz pierwszy niektórzy lokalni programiści mogą przez pomyłkę kontynuować zatwierdzanie zdalnego repo. – exbluesbreaker

+0

@exbluesbreaker: Możesz upuścić '--mirror', ale wtedy musisz określić gałąź, którą chcesz nacisnąć, np. 'git push origin master'. Wtedy prawdopodobnie chciałbyś również dodać '--tags' do tagów" push to push ". '--mirror' przesunie wszystkie lokalne gałęzie i znaczniki, więc zrobi to wszystko automatycznie (ale nadpisze zdalne zmiany). –

1

Powinieneś być w stanie dokonać płytkich klonów z

git clone --depth=20 url-to-your-repo some-path 

Powinno to umożliwić Ci nie przeszkadza większość historii.

Powiązane problemy