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.

Tuning dello strato HTTP

[http]
version = HTTP/2
postBuffer = 524288000
lowSpeedLimit = 1000
lowSpeedTime = 30
minSessions = 4
maxRequestBuffer = 100M

Parallelismo fetch

git config fetch.parallel 0
git config submodule.fetchJobs 0

Smart vs dumb HTTP

"Smart" HTTP supporta la negoziazione (la via moderna); "dumb" HTTP serve solo .git/objects come file statici.

Errori comuni

Forzare HTTP/1.1 con http.version=HTTP/1.1 su un host che supporta HTTP/2.

Diagnosticare

GIT_CURL_VERBOSE=1 git fetch 2>&1 | head -30
GIT_TRACE_PACKET=1 git fetch 2>&1 | grep -i version