Da Anonimo (non verificato) , 29 Aprile 2026

Diagnosticare la corruzione

I repository si corrompono per perdita di alimentazione, guasti del disco, sync di rete parziale, o tool non-Git buggati che toccano .git.

Da Anonimo (non verificato) , 29 Aprile 2026

fast-export e fast-import

git fast-export serializza un repository in un flusso di comandi; git fast-import ricostruisce un repository da uno. Insieme formano il protocollo di interscambio dati di Git.

Da Anonimo (non verificato) , 29 Aprile 2026

Il problema cross-fork

I server forge (GitHub, GitLab) ospitano molti fork di un repo insieme. Ingenuamente, un singolo packfile delta-comprime tra tutti i fork — efficiente su disco, ma inefficiente quando si serve un singolo fork. Le isole delta vincolano le catene delta cosi le catene di ogni fork rimangono nel proprio insieme di oggetti.

Da Anonimo (non verificato) , 29 Aprile 2026

Lo strato di trasporto

Il protocollo wire di Git storicamente intervalla messaggi client e server su una connessione stateful. stateless-connect (introdotto per il protocollo v2 su HTTP) disaccoppia le richieste cosi ognuna e instradabile in modo indipendente.

Flussi stateless

GIT_TRACE_PACKET=1 GIT_TRACE_CURL=1 \
  git -c protocol.version=2 fetch origin 2>&1 | head -50

Vantaggi HTTP/2

Il multiplexing HTTP/2 consente a piu richieste stateless di condividere una connessione.

Da Anonimo (non verificato) , 29 Aprile 2026

Perche v2

Il protocollo v0/v1 inviava l'intera pubblicita dei ref del server all'inizio di ogni fetch — un payload proporzionale al numero di ref. Su repo con decine di migliaia di ref, questo dominava il tempo di trasferimento. Il protocollo v2 (default da Git 2.26+) consente al client di richiedere ref specifici per nome.

Da Anonimo (non verificato) , 29 Aprile 2026

Il trade-off shallow

Un clone shallow (--depth=N) scarica solo gli ultimi N commit. Piu veloce, piu piccolo, ma con caveat: molte operazioni dipendenti dalla storia diventano impossibili o sbagliate.

Da Anonimo (non verificato) , 29 Aprile 2026

Due vittorie di parallelismo

Due impostazioni sbloccano speedup significativi per le operazioni quotidiane. core.preloadIndex parallelizza le chiamate lstat che git status fa; il checkout parallelo (Git 2.32+) parallelizza le scritture di file durante git checkout, git switch e git restore.

Da Anonimo (non verificato) , 29 Aprile 2026

Budget di repack

Quando Git calcola i delta durante il repack, considera una finestra di oggetti base candidati per ogni target. Finestre piu grandi producono pack piu piccoli ma usano piu memoria e CPU.