Próbuję sklonować bazę kodu LibreOffice, ale w tej chwili mam połączenie internetowe o prędkości około 300 kb / s, ale jest stabilne. Mogę odzyskać połączenie w dowolnym momencie, ale potem proces klonowania git już przestał działać i nie ma sposobu, aby przywrócić go ponownie. Czy istnieje sposób na bardziej odporne na awarie pobieranie klonowania git?
Jedną z opcji, którą uważałem za siebie, jest pobranie katalogu innej osoby .git, ale jest to w dużym stopniu zależne od innych i nie wydaje mi się to najlepszym możliwym rozwiązaniem.
depth -1
jest rozwiązanie?kernel/git/torvalds/linux.git
. Dyskutowany jest wznawiający klon git (marzec 2016 r.). Zobacz stackoverflow.com/a/29192890/6309 .git init
, ustawiając pilota, a następnie wykonując pobieranie, dopóki się nie uda. Nie sądzę, aby pobieranie odrzuciło pomyślnie pobrane obiekty, jeśli połączenie nie powiedzie się.Odpowiedzi:
Nie sądzę, żeby to było jeszcze gotowe. Istnieje stara strona GSoC , która planowała zaimplementować pożądaną funkcję. Mój najlepszy zakład to, tak jak sugerowałeś, pobierz go jako katalog. Zakładam, że możesz wznowić pobieranie przy użyciu innych protokołów.
Aktualizacja
Wraz z
git clone --depth=1
sugestią płytkiego klonowania ( ) w jednej z pozostałych odpowiedzi może być pomocne, jeśli ktoś może stworzyć dla ciebie puste repozytorium, jeśli możesz komunikować się z dostawcą. Możesz łatwo przekonwertować samo repozytorium na pełne. Przeczytaj także komentarze w tej odpowiedzi, ponieważ płytki klon nie zawsze może pomóc.źródło
--depth 1
i--unshallow
wydaje się, że wytrzymał latach użytkowania.Dwa przychodzące na myśl rozwiązania (a raczej obejścia ):
Zastosowanie płytkie klon znaczy
git clone --depth=1
, następnie pogłębić ten klon korzystaniagit fetch --depth=N
, wraz ze wzrostem N . Możesz użyćgit fetch --unshallow
(od 1.8.0.3), aby pobrać wszystkie pozostałe wersje.Poproś kogoś o dołączenie do niektórych oznaczonych wersji (patrz strona git-bundle (1) ). Sam pakiet jest zwykłym plikiem, który można pobrać w dowolny sposób, przez HTTP / FTP z obsługą wznowienia, przez BitTorrent, przez rsync itp. Możesz utworzyć klon z pakietu, naprawić konfigurację i wykonywać dalsze pobrania z oficjalnego repozytorium LibreOffice .
źródło
for m in $(seq 1 50);do git fetch --depth=$[m*100];done
pracował dla mnie, dzięki! :)Ta metoda wykorzystuje serwer innej firmy.
Najpierw wykonaj
git clone --bare
, a następniersync -v -P -e ssh user@host:repo.git .
Możesz użyć msys w systemie Windows.źródło
rsync(1)
przez sposób, w jaki GitHub na ciebie patrzy ”? A może chcesz najpierwgit clone
na serwerze innej firmy, a następnie zsynchronizować go z komputerem lokalnym?„ Nigdy nie lekceważ przepustowości gołębia pocztowego i pakietu kart SD ” byłoby nowoczesną formą tej odpowiedzi. Zniszczyć go, po prostu stary
cp -a
, cokolwiek, i wysłać to cholerstwo. Znajdź kogoś, kto zechce poświęcić dwie minuty swojego czasu, aby wrzucić dysk twardy do SASE. Znajdź kontakt, tam mogą nawet zrobić to za Ciebie.źródło
Możesz „pobrać katalog .git innej osoby”, ale ta osoba jest oficjalnym repozytorium. Repozytoria LibreOffice są dostępne za pośrednictwem http, na przykład
build.git
pod adresem http://anongit.freedesktop.org/git/libreoffice/build.git/ (patrz http://cgit.freedesktop.org/libreoffice/ pełna lista , adres URL http znajduje się na dole strony każdego repozytorium).To, co widzisz w tych adresach URL HTTP, to nic innego jak
.git
katalog (w rzeczywistości „puste” repozytorium, które zawiera tylko to, co znajdziesz w.git
katalogu). Jest to ten sam katalog, który czytałby serwer dlagit://
protokołu (git daemon
). Jeśli wykonasz kopię tych katalogów za pomocą narzędzia do pobierania z Internetu (na przykładwget -m -np
), możesz sklonować z kopii i będzie działać tak samo, jakby sklonowano bezpośrednio z repozytorium http.Możesz więc: dla każdego repozytorium uzyskać jego kopię za pomocą swojego ulubionego programu do pobierania z Internetu (który poradzi sobie ze wszystkimi problemami z wznowieniem niedziałających pobrań) i sklonować z tej kopii. Kiedy chcesz zaktualizować, użyj ponownie swojego ulubionego programu do pobierania stron internetowych, aby zaktualizować kopię, i pobierz ją z tej kopii. Teraz Twoje klony i aktualizacje są tak samo odporne na złe połączenia, jak Twój ulubiony program do pobierania plików z Internetu.
źródło
Podzielmy na
git clone
części składowe i użyj,git checkout
aby zapobiec ponownemu pobieraniu plików.Po
git clone
uruchomieniu pierwsze kilka rzeczy, które robi, są równoważneJeśli uruchomisz powyższe kroki ręcznie i przy założeniu, że zostały one wykonane poprawnie, możesz teraz uruchomić następującą liczbę razy:
Pamiętaj, że będzie kasował wszystkie pliki przy każdym uruchomieniu, ale nie będziesz musiał ponownie pobierać plików , co może zaoszczędzić mnóstwo czasu.
źródło
Jeśli masz dostęp do serwera innej firmy, możesz go sklonować, a następnie skopiować.
źródło
To polecenie pomóżcie mi (dzięki Nicola Paolucci )
na przykład
źródło
Opierając się na odpowiedziach opartych na klonie / głębokości - kilka linii basha robi to łatwo ...
git clone --depth=1 [email protected]:/var/git/whatever.git <directory> cd <directory> for m in `seq 1 100`;do git fetch --depth=$m;done
źródło
seq 1 10 1000
; do git pull --depth = $ m; done, aby uzyskać kroki 10. PS Jeśli zrobię Ctrl + CI, stracę tylko bieżący pakiet i mogę zacząć od nowaTen problem też mnie ugryzł. W moim przypadku istnieje obejście. To może, ale nie musi mieć zastosowania w twoim przypadku.
Czasami używam telefonu komórkowego do inicjowania operacji git na zdalnym systemie. Jeśli moje wi-fi zepsuje, oczywiście sesja się kończy i git porzuca całą operację klonowania bez odzyskiwania. Ale ponieważ połączenie internetowe między moim zdalnym systemem a git master jest stałe, klon nie musi się zatrzymywać. Potrzebuję tylko zdrowego rozsądku, aby odłączyć klon od sesji terminalowej. Można to zrobić za pomocą screen / tmux lub nohup / daemon. Więc w moim przypadku jest to awaria oprogramowania na żywo.
źródło
Użyj git proxy, takiego jak ngitcached lub git-proxy .
źródło
Użyj CNTRL Z, aby zatrzymać klonowanie. Nie zamykaj terminala, przełącz system / laptop w stan hibernacji, a następnie kontynuuj komendą fg. Napotkałem dzisiaj ten sam problem, próbując sklonować repozytorium github z repo. To przyniosło mi oszczędność czasu.
źródło
Zwiększenie rozmiaru bufora pomoże ci w tym problemie. Postępuj zgodnie z instrukcjami.
kroki:
1. Otwórz terminal lub Git Bash i za pomocą „cd” przejdź do lokalizacji, w której chcesz sklonować repozytorium.
2. Ustaw kompresję na 0
3. Ustaw rozmiar postBuffer
4.Ustaw rozmiar maxRequestBuffer
5. Teraz rozpocznij klonowanie
6. Poczekaj, aż klon się skompletuje.
Dziękuję Ci. Happy Coding !!!
źródło
Chciałbym tu umieścić moje 5 centów. Właśnie to pomogło mi rozwiązać ten problem
Pomogło mi to w sklonowaniu ~ 3 GB repozytorium na połączenie adsl 8 Mb / s, oczywiście musiałem kilka razy pobierać i pobierać, ale nadal ...
źródło
jeśli założymy, że serwer ma dobre pasmo (a ty masz serwer), inną odpowiedzią jest:
ale działa to tylko przy bardzo podstawowych doświadczeniach związanych z tworzeniem stron internetowych;), a także potrzebujesz
git.exe
w swoim serwerzeźródło
Ten sam problem tutaj - mam naprawdę niestabilne połączenie internetowe z często nie więcej niż 10-15 kb / s :-P
Dla mnie sposób wget działał bardzo dobrze. Przejdź do strony repozytorium, w której znajduje się zielony przycisk „klonuj lub pobierz”, kliknij go i skopiuj link opcji pobierania ZIP.
Następnie wstaw link do polecenia
wget : wget -c -m -np https://github.com/your/repository/archive/master.zip
Działa jak marzenie...
źródło
najlepsze obejście, które dla mnie zadziałało:
napotkałem ten sam problem ze złym połączeniem internetowym. Więc wymyśliłem następujące rozwiązanie:
Utworzyłem mały plik php na moim serwerze, aby pobrać pakiet jako plik zip:
następnie pobierz plik zip za pomocą dowolnego menedżera pobierania, który obsługuje wznawianie
źródło
Możesz spróbować użyć rtęci z rozszerzeniem hg-git.
Jeśli to nie zadziała, możesz użyć
git fetch <commit-id>
do pobrania tylko części zdalnego repozytorium git (możesz pobrać do pustego repozytorium git, nie ma potrzeby tworzenia go za pomocą klonowania). Ale możesz poprawić konfigurację gałęzi (= utworzyć lokalne i zdalne gałęzie śledzenia), korzystając z tego podejścia.źródło