diff --git a/.claude/commands/full-git-pull.md b/.claude/commands/full-git-pull.md index 6cceef77..1ae77f32 100644 --- a/.claude/commands/full-git-pull.md +++ b/.claude/commands/full-git-pull.md @@ -1,6 +1,14 @@ # /full-git-pull — Pull de fn_registry + todos los sub-repos + submodules + fn sync -Trae los últimos cambios del remote para el repo principal `fn_registry`, todos los sub-repos git anidados, y los submodules de `cpp/vendor/`. Después regenera `registry.db` y corre `fn sync` para tirar de la metadata del `registry_api` (apps, projects, analysis, vaults, pc_locations registrados desde otros PCs). +Trae los últimos cambios del remote para el repo principal `fn_registry`, todos los sub-repos git anidados que **ya existan localmente**, y los submodules de `cpp/vendor/`. Después regenera `registry.db` y corre `fn sync` para tirar de la metadata del `registry_api` (apps, projects, analysis, vaults, pc_locations registrados desde otros PCs). + +**No clona repos que falten.** Cada PC tiene solo el subset de apps/analyses que le interesa (ver memoria "Gitea = fuente de verdad; PCs subset"). Si en este PC necesitas un sub-repo que aún no tienes, clónalo a mano: + +```bash +git clone https://:@/dataforge/.git +``` + +Consulta `pc_locations` para ver dónde lo tiene otro PC y reproduce el path. ## Argumento @@ -8,7 +16,7 @@ Trae los últimos cambios del remote para el repo principal `fn_registry`, todos ## Pasos -### 1. Descubrir repos + clonar dataforge/ faltantes +### 1. Descubrir repos locales ```bash cd /home/lucas/fn_registry # ajustar al PC @@ -25,19 +33,7 @@ REPOS=$(find . -name ".git" -type d \ REPOS=". $REPOS" ``` -Despues, despues de `fn sync` (paso 5), hacer **una segunda pasada** para clonar repos `dataforge/` que esten registrados en `pc_locations` o `apps`/`analysis` pero no existan localmente — la metadata vino del API y los repos hay que clonarlos: - -```bash -# Listar apps + analysis registradas con dir_path -sqlite3 registry.db "SELECT name, dir_path FROM apps WHERE dir_path != '' UNION SELECT name, dir_path FROM analysis WHERE dir_path != '';" | while IFS='|' read name path; do - full="$path" - if [[ ! -d "$full/.git" && ! -d "$full" ]]; then - GITEA_URL=$(pass agentes/gitea-url | head -n1) - GITEA_TOKEN=$(pass gitea/dataforge-git-token | head -n1) - git clone "https://${GITEA_TOKEN}@${GITEA_URL#https://}/dataforge/${name}.git" "$full" 2>&1 | tail -2 - fi -done -``` +Solo se actualizan los sub-repos que ya tengan `.git/` localmente. Lo que falte se queda fuera — pull-on-demand por sub-repo. ### 2. Para cada repo: stash si dirty, pull --ff-only, pop