Git Smart HTTP es un protocolo de transporte que extiende el protocolo HTTP/S para permitir operaciones de Git (push y pull) de manera eficiente. A diferencia del 'Dumb HTTP', que simplemente sirve archivos estáticos del repositorio y requiere que el cliente descubra los objetos necesarios, Smart HTTP introduce un mecanismo de negociación. El cliente envía una solicitud POST a un endpoint específico (ej. `/info/refs?service=git-upload-pack` para fetch o `/info/refs?service=git-receive-pack` para push), y el servidor responde con los objetos y referencias que el cliente necesita o que el servidor requiere para actualizar su estado, optimizando la transferencia de datos al enviar solo los deltas o paquetes de objetos necesarios.
Este protocolo es la base de cómo la mayoría de las plataformas modernas de alojamiento de repositorios Git interactúan con sus clientes. Ejemplos concretos incluyen GitHub, GitLab, Bitbucket y Azure DevOps. Cuando un desarrollador clona, hace pull o push a un repositorio alojado en cualquiera de estas plataformas usando una URL HTTP/S (ej. `https://github.com/user/repo.git`), están utilizando Git Smart HTTP. Los servidores de estas plataformas implementan los 'smart HTTP endpoints' que responden a las solicitudes de los clientes Git, gestionando la autenticación (a menudo con tokens personales o OAuth) y la autorización a nivel de HTTP/S.
Para un arquitecto, Git Smart HTTP es crucial por varias razones. Primero, simplifica la gestión de la infraestructura de red, ya que utiliza los puertos estándar 80/443, evitando problemas con firewalls y proxies que a menudo bloquean otros puertos. Segundo, permite aprovechar la infraestructura web existente para autenticación (ej. SSO, OAuth) y autorización, integrándose fácilmente con sistemas de gestión de identidades corporativos. Tercero, ofrece un buen equilibrio entre rendimiento y facilidad de uso; aunque puede ser ligeramente menos eficiente que SSH para transferencias masivas en redes de alta latencia, su ubicuidad y compatibilidad con la infraestructura web lo hacen ideal para la mayoría de los escenarios. La decisión de usar Smart HTTP frente a SSH a menudo se reduce a la política de seguridad de la organización, la gestión de claves y la integración con sistemas de autenticación existentes.