Por Anónimo (no verificado) , 29 Abril 2026

Por qué v2

El protocolo v0/v1 enviaba la publicidad completa de refs del servidor al inicio de cada fetch — un payload proporcional al número de refs. En repos con decenas de miles de refs, esto dominaba el tiempo de transferencia. El protocolo v2 (default en Git 2.26+) permite al cliente solicitar refs específicas por nombre.

Verificar que está activado

GIT_TRACE_PACKET=1 git ls-remote origin 2>&1 | head -10
git config protocol.version 2
git config --global protocol.version 2

Requisitos del servidor

  • HTTP: Git 2.18+ en el servidor.
  • SSH: Git 2.18+ en ambos extremos.
  • Algunos hosts legacy pueden necesitar uploadpack.allowFilter=true.

Capabilities

GIT_TRACE_PACKET=1 git fetch 2>&1 | grep -i 'capabilit\|fetch='

Impacto práctico

En el repo de Linux (~50k refs), un fetch fresco sobre v0 gastaba 4-8 segundos en publicidad; v2 lo reduce a menos de un segundo.

Sideband y progreso

git fetch --quiet
git -c progress.delay=999 fetch

Errores comunes

Forzar versión 0 del protocolo en archivos config viejos.

Combinar con

  • Algoritmo de negociación: fetch.negotiationAlgorithm=skipping.
  • Bitmaps de alcanzabilidad en el servidor.
  • Filtrado de refs: fetch.refSpecs.