Un servidor de Git almacenado por completo en un bucket de objetos

Fuentes: I taught a bucket to speak git

Tigris, un servicio de almacenamiento de objetos en la nube, ha presentado objgit, un servidor de Git cuyo repositorio reside íntegramente en un bucket de almacenamiento de objetos, sin estado local en el servidor. El proyecto es obra de un ingeniero que, al portar sandboxes de agentes a Go, consiguió que un bucket de Tigris se comportara como un sistema de archivos gracias a la capa de abstracción billy, originalmente creada para go-git. Esa misma pieza le llevó a preguntarse si podía conectar go-git —una implementación pura en Go del protocolo y los formatos de Git, sin dependencia del binario /usr/bin/git— directamente a un bucket.

La clave está en cómo Git organiza la información: objetos comprimidos, árboles, commits y referencias, un modelo que encaja de forma natural con el almacenamiento append-only de Tigris, ya que los objetos son content-addressed e inmutables una vez escritos, y las refs son archivos minúsculos. objgit expone los transportes HTTP, git:// y SSH, crea el repositorio en la primera subida, incorpora métricas de Prometheus y no implementa autenticación porque se trata de un experimento. Todo el sistema, incluidas las claves SSH generadas, vive en el bucket y se ejecuta como un único binario en Go, lo que permite desplegarlo en un clúster de Kubernetes sin estado local.