Jak ukończyć git clone dla dużego projektu na niestabilnym połączeniu?
Próbuję sklonować bazę kodową LibreOffice, ale w tej chwili mam połączenie z Internetem około 300kbps i nie jest stabilne. Mogę odzyskać połączenie w każdej chwili, ale potem proces git clone już przestał działać i nie ma sposobu, aby go uruchomić ponownie. Czy jest jakiś sposób na bardziej odporne na awarie pobieranie git clone?
Jedną z opcji, którą uważałem za siebie, jest pobranie cudzego .katalog git, ale to jest zbyt zależne od innych i nie wydaje mi się to najlepszym rozwiązaniem.
15 answers
Nie sądzę, żeby to było jeszcze gotowe. Jest stara strona GSoC , która planowała zaimplementować pożądaną funkcję. Najlepiej, jak sugerowałeś, ściągnij to jako katalog. Zakładam, że jesteś w stanie wznowić pobieranie przez inne protokoły.
Restartable Clone
Podczas klonowania dużego repozytorium (takiego jako KDE, Open Office, Linux kernel) obecnie nie ma możliwości ponownego uruchomienia przerwany klon. Może to potrwać sporo czasu dla użytkownika na na koniec małej rury do pobrania danych, a jeśli klon zostanie przerwany w środku użytkownik aktualnie potrzebuje zacząć od początku i spróbuj jeszcze raz. Dla niektórych użytkowników może to uniemożliwić sklonowanie dużego repozytorium.
Cel: zezwolić git-clone na automatyczne Wznów wcześniejsze nieudane pobieranie nad natywnym protokołem git://. Język: C Mentor: Shawn Pearce Zasugerował: Shawn Pearce on gmane
Update
Wraz z sugestią płytkiego klonowania (git clone --depth=1
) w jednej z innych odpowiedzi może być pomocne, jeśli ktoś może zrobić gołe repozytorium dla Ciebie, jeśli możesz komunikować się z dostawcą. Możesz łatwo przekonwertować nagie repozytorium na pełne repozytorium. Przeczytaj również komentarze w tej odpowiedzi jako płytki klon nie zawsze może pomóc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:39
Dwa rozwiązania (a raczej obejścia) na myśl przychodzą:
Użyj shallow clone tj.
git clone --depth=1
, następnie pogłębić ten klon używającgit fetch --depth=N
, zwiększając N . Możesz użyćgit fetch --unshallow
(od wersji 1.8.0.3), aby pobrać wszystkie pozostałe wersje.Poproś kogoś o pakiet do jakiegoś oznaczonego wydania (Zobacz Git-bundle(1) strona Man). Sam pakiet jest zwykłym plikiem, który można pobrać w dowolny sposób, poprzez HTTP / FTP z obsługą CV, przez BitTorrent, przez rsync itp. Możesz utworzyć klon z pakietu, naprawić konfigurację i wykonać dalsze pobieranie z oficjalnego repozytorium LibreOffice.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-22 23:14:22
Ta metoda wykorzystuje serwer 3rd party.
Po Pierwsze, do
git clone --bare
, wtedy
rsync -v -P -e ssh user@host:repo.git .
Możesz używać MSY pod Windows.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 10:54:54
Możesz " ściągnąć kogoś innego .Git directory", ale z tym, że ktoś inny jest oficjalnym repozytorium. Repozytoria LibreOffice są dostępne przez http, na przykład ich build.git
znajduje się pod adresem http://anongit.freedesktop.org/git/libreoffice/build.git / (patrz http://cgit.freedesktop.org/libreoffice / dla pełnej listy adres URL http znajduje się na dole każdej strony repozytorium).
To, co widzisz w tych adresach http, to nic innego jak katalog .git
(właściwie" gołe " repozytorium, które ma tylko to, co znajdziesz w katalogu .git
). Jest to ten sam katalog, który odczyta serwer protokołu git://
(git daemon
). Jeśli wykonasz kopię tych katalogów za pomocą web downloadera (na przykład wget -m -np
), możesz sklonować swoją kopię i będzie ona działać tak samo, jak gdyby sklonowano ją bezpośrednio z repozytorium http.
Możesz więc: dla każdego repozytorium uzyskać jego kopię za pomocą ulubionego programu do pobierania stron internetowych (który poradzi sobie ze wszystkimi problemy z wznawianiem uszkodzonych pobrań) i klonowanie z tej kopii. Gdy chcesz zaktualizować, użyj ponownie swojego ulubionego programu do pobierania stron internetowych, aby zaktualizować kopię i wyciągnąć z niej kopię. Teraz Twoje klony i aktualizacje są tak samo odporne na złe połączenia, jak Twój ulubiony program do pobierania stron internetowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-12 21:14:14
"nigdy nie lekceważ przepustowości gołębia pocztowego, a pakiet kart SD " byłby nowoczesną formą tej odpowiedzi. Tar it up, plain old cp -a
it, whatever, and mail the damn thing. Znajdź kogoś, kto poświęci dwie minuty na wrzucenie pendrive 'a do SASE' a. Znajdź kontakt, tam, mogą nawet zrobić to za Ciebie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-13 00:44:49
Jeśli masz dostęp do serwera innej firmy, możesz tam sklonować, a następnie skopiować.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-17 19:26:37
Podzielmy git clone
Na części składowe i użyjmy git reset
, aby zapobiec ponownemu pobieraniu plików.
Kiedy git clone
działa, kilka pierwszych rzeczy, które robi, jest równoważne
git init
git remote add origin <repo_url>
git fetch origin <branch>
Jeśli wykonasz powyższe kroki ręcznie i zakładając, że zostały wykonane poprawnie, możesz teraz wykonać następujące czynności tyle razy, ile jest to konieczne:
git reset --hard origin/<branch>
Zauważ, że będzie sprawdzać wszystkie pliki za każdym razem, gdy jest uruchomiony, ale nie będziesz musiał ponownie pobierać plików , co może zaoszczędzić mnóstwo czas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 19:47:15
Ten problem też mnie ugryzł. W moim przypadku istnieje obejście. W Twoim przypadku może to mieć zastosowanie, ale nie musi mieć zastosowania.
Używam czasami telefonu komórkowego do inicjowania operacji Gita na zdalnym systemie. Jeśli moje wi-fi się zepsuje oczywiście sesja się kończy i git porzuca całą operację klonowania bez odzyskiwania. Ale ponieważ połączenie internetowe z mojego zdalnego systemu do git master jest solidne, nie ma potrzeby, aby klon się zatrzymał. Potrzebuję tylko rozsądku, by odłączyć klona od terminala. sesja. Można to zrobić za pomocą screen / tmux lub nohup / daemon. Więc w moim przypadku jest to awaria liveware.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-14 16:47:32
Użyj CNTRL Z, aby zatrzymać klonowanie. Nie zamykaj terminala umieść system / laptop w hibernacji, a następnie kontynuuj później za pomocą polecenia fg. Miałem do czynienia z tym samym problemem dzisiaj, próbując sklonować repo FRM github. To było dla mnie oszczędnością czasu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-26 19:17:14
git clone --depth <Number> <repository> --branch <branch name> --single-branch
This command help me (Thanks to Nicola Paolucci)
Na przykład
git clone --depth 1 https://github.com/gokhanmoral/siyahkernel3 --branch ics --single-branch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-21 14:12:29
Użyj proxy git, takiego jak ngitcached lub Git-proxy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 21:31:19
Bazując na odpowiedziach opartych na klonie/głębi-kilka linijek bash łatwo to robi...
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-26 16:11:59
Możesz spróbować użyć mercurial 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ą clone). Ale możesz poprawić konfigurację gałęzi (=utworzyć lokalne i zdalne gałęzie śledzenia) podczas korzystania z tego podejścia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-18 08:33:40
Jeśli założymy, że serwery mają dobre pasmo (a Ty masz serwer) to inna odpowiedź brzmi:
- Stwórz swój własny serwer używając Server-Side Git Wrapper ' s
- Sklonuj go na swoim serwerze
- Zip it using Server-Side Zip Archiver ' s
- pobierz go z i z serwera Wznów obsługę
Ale to działa tylko z bardzo podstawowym doświadczeniem tworzenia stron internetowych ;)
a także potrzebujesz git.exe
w swoim sever
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 07:26:29
Ten sam problem tutaj-mam naprawdę flakowate 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, gdzie znajduje się zielony przycisk "Klonuj lub pobierz", kliknij go i skopiuj link do opcji pobierania ZIP.
Następnie Wstaw link do komendy wget:
wget-c-m-np https://github.com/your/repository/archive/master.zip
Działa jak czar...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-02 07:53:53