Saltar a contenido

git-annex

Herramienta que gestiona archivos grandes con git sin meter su contenido en git; hace location tracking de copias en múltiples discos/remotes, soporta archive drives offline y te dice qué disco enchufar para recuperar un archivo.

Contexto

Es lo más cercano que existe al lado software del proyecto, ya hecho y maduro. Resuelve "¿en qué disco está este archivo y cómo lo recupero?" sin necesidad de tener los discos encendidos. En el proyecto, su mensaje "enchufá el disco X" se automatiza con el robot (mecanica pick and place).

Contenido

  • Gestiona el contenido de los archivos por separado del árbol git; el repo solo guarda punteros/symlinks + metadata de ubicación.
  • Offline archive drives: podés mover archivos viejos a un disco de archivo y mantenerlo desconectado; git-annex recuerda qué hay ahí. Documentado oficialmente (tips/offline_archive_drives).
  • Location tracking: sabe cuántas copias existen y dónde, para garantizar preservación (numcopies).
  • No es un VFS tradicional: usa tracking + pointer files en vez de montar un filesystem virtual. Eso es a la vez su límite (no hay open() transparente que dispare el recall) y su virtud (simple, robusto, no requiere FUSE corriendo).
  • Hook special remotes (clave para el proyecto): cada operación corre un comando shell con variables de entorno — ANNEX_ACTION ∈ {store, retrieve, remove, checkpresent} y ANNEX_KEY. En retrieve se dispara un script externo que puede ordenar al robot conectar el disco. Es el punto de integración hardware↔software → ver integracion software robot.

Encaje en el proyecto: usar git-annex como catálogo y motor de ubicación (sistema archivos virtual indexado), y construir encima el disparador que, cuando git-annex pide un drive, ordena al robot conectarlo. Hace falta mapear ANNEX_KEY → serial del disco (identificacion discos) → slot físico.

Relaciones

Citas / evidencia

  • "git-annex keeps track of where each file is stored... If necessary, git-annex will tell you which archive drive you need to pull out of storage to get the file back." — panorama inicial prior art
  • "manage files with git, without checking their contents into git" — panorama inicial prior art (Hackage)

Abierto / gaps

  • Probar el flujo real de "request → which drive" y ver qué hook/evento expone para automatizar el robot.
  • ¿Escala a cientos de miles de archivos por disco sin que el repo git se vuelva pesado?
  • Comparar con mergerfs + SnapRAID y con catálogos de medios offline dedicados.