2013-07-11 11 views
14

Mi chiedo che git clone --verbose non sia molto dettagliato. L'uscita di eseguire il comando è il seguente:Modalità verbale clone Git - mostra ogni oggetto in entrata

$ 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. 

Il comportamento previsto è per visualizzare l'elenco degli oggetti ricevuti uno per uno. È possibile utilizzare alcune altre opzioni?

+0

Una curiosità - se 'git' infatti ha riportato ogni oggetto-by -come tu proponi, allora un clone del git 'del repository del kernel di Linux produrrebbe ben oltre 2 milioni di righe di output. Probabilmente una buona ragione per cui non è implementata in questo modo ... Se vuoi davvero che le informazioni, puoi provare 'git rev-list --objects --all' ... – twalberg

+0

Vedo, sai che" git rev- list --objects --all "fornisce lo stesso ordine degli oggetti che sono" git clone "per" Receiving objects "? Ho bisogno di questo perché a volte ricevo l'errore di rete quando ricevo uno degli obiettivi e voglio fidn esattamente questo oggetto nell'albero. – erkfel

+0

Sarei estremamente sorpreso se il tuo "errore di rete" fosse in qualche modo correlato a un oggetto specifico attualmente trasferito su un socket TCP. L'ordine probabilmente non è lo stesso, poiché 'git' sta generando e inviando un file pack che contiene gli oggetti richiesti, e gli oggetti ordine inseriti in un file pack possono sembrare in qualche modo arbitrari. – twalberg

risposta

13

Non è possibile elencare gli oggetti (file, commit, BLOB, qualsiasi cosa) uno per uno, semplicemente perché git li racchiude in un unico file per motivi di efficienza. Per lo stesso motivo, durante la clonazione vedrai solo una cartella nascosta .git, i file verranno creati solo se il file del pacchetto completo è stato scaricato.

Se vi state chiedendo, questi file pack verranno scaricati su .git/objects/pack/ con un nome come tmp_pack_XXXXXX. (in seguito, verrà rinominato in qualcosa come pack-*.pack con un file pack-*.idx correlato)

0

Accetto la risposta @Lekensteyn.

Se si desidera tracciare i comandi remoti git, aggiungere le seguenti variabili ambientali nelle vostre terminal.This aiuta a sbirciare in quello che è in esecuzione dietro le quinte di un comando git.

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

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

Esempio Clonazione Risultato dopo l'esportazione enter image description here

enter image description here

enter image description here enter image description here