#!/bin/sh # mirror-git-poblar.sh — espeja las fuentes GIT del corpus como bundles (ADR 0013). # # ── POR QUÉ BUNDLES SHALLOW Y NO CLONES COMPLETOS ────────────────────────────────────────────── # Takana no usa la historia: lo único que hace con un repo es `git archive | tar -x`, o sea # materializar UN árbol. Un clon `--depth 1` del commit exacto basta, y para `act` son 8,9 MB en # lugar del repositorio entero. Con 606 fuentes git, la diferencia decide si el mirror cabe. # # El objeto se nombra por CONTENIDO igual que los tarballs: `takana/fuentes-git/{commit}.bundle`. # El commit ES su verificación — git comprueba cada objeto contra su SHA al desempaquetar, así que # un bundle alterado no pasa. No hace falta índice ni sha256 aparte. # # ── EL FICHERO `shallow` NO SE SUBE ──────────────────────────────────────────────────────────── # Un bundle hecho desde un repo shallow no lleva la frontera de historia, y al desempaquetarlo git # aborta con «Failed to traverse parents». Suena a bundle incompleto y NO lo es: los objetos llegan # enteros. La frontera de un clon `--depth 1` es exactamente el commit pedido, así que el lado que # consume la reconstruye sola (lo hace `hidratar_desde_bundle` en fetch.rs). Nada que transportar. # # Uso: scripts/fuentes/mirror-git-poblar.sh # todas las que falten # LIMITE=20 scripts/fuentes/mirror-git-poblar.sh # sólo las 20 primeras # SOLO=mesa scripts/fuentes/mirror-git-poblar.sh # una receta concreta set -eu ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT" exec python3 scripts/fuentes/mirror-git-poblar.py "$@"