2013-07-11 5 views
14

Zastanawiam się, że git clone --verbose nie jest zbyt szczegółowy. Wyjście wykonywania polecenia jest następujące:Git clone verbose mode - pokaż każdy przychodzący obiekt

$ git clone --verbose <repo> 
remote: Counting objects: 184, done 
remote: Finding sources: 100% (184/184) 
remote: Total 184 (delta 66), reused 183 (delta 66) 
Receiving objects: 100% (184/184), 18.90 KiB, done. 
Resolving deltas: 100% (66/66), done. 

Oczekiwanym zachowaniem jest obserwowanie listy otrzymanych obiektów jeden po drugim. Czy to możliwe, używając innych opcji?

+0

Zabawa fakt - jeśli 'git' rzeczywiście zrobił zgłosić każdy obiekt jeden po -jeden, jak chcesz, a następnie "klon git" 'z repozytorium jądra Linuksa wytworzyłoby ponad 2 miliony linii wyjściowych. Prawdopodobnie dobry powód, dla którego nie jest on zaimplementowany w ten sposób ... Jeśli naprawdę chcesz uzyskać te informacje, możesz spróbować 'git rev-list --objects --all' ... – twalberg

+0

Rozumiem, czy wiesz, że" git rev- list --objects - all "zapewnia taką samą kolejność obiektów, jaką jest" git clone "dla" Receiving objects "? Potrzebuję tego, ponieważ czasami dostaję błąd sieciowy po otrzymaniu jednego z obiektów i chcę dokładnie odhaczyć ten obiekt w drzewie. – erkfel

+0

Byłbym bardzo zaskoczony, gdyby twój "błąd sieci" był w jakikolwiek sposób związany z konkretnym obiektem przesyłanym obecnie przez gniazdo TCP. Kolejność prawdopodobnie nie jest taka sama, ponieważ 'git' generuje i wysyła plik pakietu, który zawiera żądane obiekty, a obiekty porządkowe umieszczane w pliku pakietu mogą wydawać się nieco arbitralne. – twalberg

Odpowiedz

13

Nie można wyświetlać obiektów (plików, zatwierdzeń, obiektów typu blob, cokolwiek) pojedynczo, ponieważ git pakuje je w jeden plik ze względu na wydajność. Z tego samego powodu zobaczysz tylko ukryty folder .git podczas klonowania, pliki zostaną utworzone tylko po pobraniu pełnego pakietu.

Jeśli zastanawiasz się, pliki tych pakietów zostaną pobrane do .git/objects/pack/ o nazwie takiej jak tmp_pack_XXXXXX. (później nazwa zostanie zmieniona na podobną do pack-*.pack z powiązanym plikiem pack-*.idx)

0

Akceptuję odpowiedź @Lekensteyn.

Jeśli chcesz śledzić polecenia zdalne git, dodaj następujące zmienne środowiskowe do terminala. Pomaga to w zerknięciu na to, co dzieje się za kulisami polecenia git.

export GIT_TRACE_PACKET=1 
export GIT_TRACE=1 
export GIT_CURL_VERBOSE=1 

referencyjny: https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

Próbka Klonowanie Wynik po eksporcie enter image description here

enter image description here

enter image description here enter image description here