Sobre el proyecto
Simgit es una herramienta de línea de comandos diseñada para crear y gestionar entornos de trabajo Git con mayor eficiencia en el uso de disco y aislamiento, orientada principalmente a escenarios en los que se usan múltiples agentes de IA o se realizan esfuerzos de desarrollo paralelo sobre un único repositorio. Lo consigue mediante mecanismos de copy-on-write (CoW), que garantizan que los archivos sin modificaciones en varios entornos de trabajo compartan espacio físico en disco en lugar de duplicarse.
La herramienta es compatible con diversos sistemas operativos y sistemas de archivos:
* **macOS (APFS)**: Aprovecha la funcionalidad nativa `clonefile` sin dependencias adicionales.
* **Linux (btrfs, xfs)**: Usa las capacidades nativas de reflink sin dependencias adicionales.
* **Linux (ext4, etc.)**: Recurre a `fuse-overlayfs` para obtener la funcionalidad CoW sin necesidad de permisos de root ni módulos del kernel.
* **Windows**: No es compatible de forma nativa, pero se puede utilizar bajo WSL con un sistema de archivos Linux compatible.
Simgit no funciona con un demonio o servidor, ya que se apoya en Git para gestionar las referencias y en el sistema de archivos para la gestión de datos. Cada entorno de trabajo funciona como una checkout vinculada estándar de Git, lo que proporciona un aislamiento completo de ramas, índices y árboles de trabajo. Esto permite a los agentes trabajar en paralelo en sus propias ramas e integrar cambios mediante fusiones normales de Git.
La principal ventaja es el costo marginal de cada entorno de trabajo adicional, muy inferior al de una copia completa con `git worktree`. Las mediciones muestran que el costo escala según el número de rutas rastreadas (aproximadamente ~0,4 KiB por ruta rastreada más ~60 KiB de gasto fijo en APFS), en lugar de hacerlo según el tamaño del contenido. Esto la hace especialmente eficiente para repositorios con archivos de gran tamaño.
Simgit cuenta con comandos para añadir, listar, eliminar y realizar la recolección de basura de entornos de trabajo. El comando `sg run` permite lanzar agentes dentro de estos entornos de trabajo aislados, de forma que pueden interactuar con el repositorio como si se tratara de un checkout habitual. Admite checkouts dispersos para reducir aún más el uso de disco en agentes centrados en subárboles específicos. Los entornos de trabajo se pueden marcar como efímeros para su recolección de basura automática o como persistentes para uso a largo plazo. La herramienta también ofrece salida en formato JSON para la orquestación programática.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.