Par Anonyme (non vérifié) , 29 avril 2026

La couche transport

Le protocole de transport de Git entrelace historiquement les messages client et serveur sur une connexion à état. stateless-connect (introduit pour le protocole v2 sur HTTP) découple les requêtes pour que chacune soit routable indépendamment.

Flux sans état

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

Bénéfices HTTP/2

Le multiplexing HTTP/2 permet à plusieurs requêtes sans état de partager une connexion.

Régler la couche HTTP

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

Parallélisme fetch

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

HTTP smart vs dumb

"Smart" HTTP supporte la négociation ; "dumb" HTTP sert juste .git/objects comme fichiers statiques. Préférez toujours smart.

Erreurs courantes

Forcer HTTP/1.1 avec http.version=HTTP/1.1 sur un hôte qui supporte HTTP/2.

Diagnostic

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