Sorcery: un generador de sitios estáticos para visualizar repositorios git
El proyecto Sorcery transforma los repositorios git en páginas HTML estáticas, reduciendo el uso de recursos y la exposición a scrapers. Su enfoque read‑only y la optimización de fetches de objetos git lo hacen apto para infraestructuras li
¿Qué es Sorcery?
Sorcery no es un forge, es un visor de repositorios. Cuando se detecta un push, el servidor reconstruye los archivos HTML estáticos que representan la vista actual del repositorio: una página de resumen, el árbol de directorios del último commit de cada rama y los archivos con resaltado de sintaxis.
Los archivos se sirven como estáticos, con un único sendfile por petición. Así, el coste de servir miles de visitas de lectura se amortiza frente al coste de la actualización.
Falta de historial estático
Renderizar cada versión histórica de cada fichero sería prohibitivo en espacio y tiempo.
Para permitir la navegación histórica el visor expone el directorio .git y un cliente git mínimo en JavaScript. El cliente descarga objetos git crudos mediante dos rutas:
GET /<user>/<repo>/<oid>– descarga un objeto único.QUERY /<user>/<repo>/obj?ids=<oid1,oid2,…>– devuelve un bundle de objetos.
El bundle evita que el navegador tenga que seguir cada referencia de commit por separado, reduciendo de 3 a 1 ronda de peticiones en el ejemplo de tres commits.
Optimización de fetches
Para repositorios con objetos sueltos Sorcery ofrece un modo “smart fetch” que, dado un patrón de acceso, agrupa los objetos necesarios en un solo bundle.
Seguridad y despliegue
El visor es read‑only; la escritura se gestiona a través de sorcery‑ssh, que puede configurarse como ForceCommand en sshd. De esta forma la exposición pública mantiene la seguridad de SSH y permite la creación automática de repositorios.
Por qué sirve
El enfoque estático elimina la dependencia de recursos de cómputo que un forge completo exige. En entornos con recursos limitados (p.ej., Raspberry Pi o máquinas de 1 GB RAM) Sorcery logra servir miles de peticiones de lectura sin sobrecargar la CPU ni el disco.
Limitaciones
No gestiona usuarios, issues, PRs ni claves SSH. Solo es útil para proyectos de código abierto o de uso interno donde el control de acceso se delega a Git.
Próximos pasos
Los interesados pueden explorar el repositorio oficial y la rama que contiene el cliente SSH: Repositorio en GitHub y la carpeta de sorcery-ssh en git.t4t.associates.
En síntesis, Sorcery ofrece una alternativa ligera para quienes necesitan publicar vistas de código sin la sobrecarga de un forge completo, aprovechando la naturaleza read‑only de los repositorios y la eficiencia de los archivos estáticos.


