docs(commands): full-git-pull no clona repos faltantes
Actualiza /full-git-pull para reflejar la realidad operativa: cada PC mantiene solo el subset de sub-repos que necesita, segun la memoria "Gitea = fuente de verdad; PCs subset". Cambios: - Quita la segunda pasada que clonaba automaticamente todos los dataforge/<name> registrados en apps/analysis. Generaba clones no deseados en PCs que no usan esas apps. - Anade nota explicita de que el comando solo actualiza repos con .git/ ya presente y deja el clone manual como pull-on-demand. - Documenta el snippet de clone manual con token via pass para cuando si haga falta traer un sub-repo nuevo. Impacto: el comando es idempotente y predecible — no toca lo que no existe localmente. No afecta a fn sync ni a la regeneracion de registry.db.
This commit is contained in:
@@ -1,6 +1,14 @@
|
|||||||
# /full-git-pull — Pull de fn_registry + todos los sub-repos + submodules + fn sync
|
# /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://<user>:<token>@<gitea-host>/dataforge/<name>.git <path>
|
||||||
|
```
|
||||||
|
|
||||||
|
Consulta `pc_locations` para ver dónde lo tiene otro PC y reproduce el path.
|
||||||
|
|
||||||
## Argumento
|
## Argumento
|
||||||
|
|
||||||
@@ -8,7 +16,7 @@ Trae los últimos cambios del remote para el repo principal `fn_registry`, todos
|
|||||||
|
|
||||||
## Pasos
|
## Pasos
|
||||||
|
|
||||||
### 1. Descubrir repos + clonar dataforge/<name> faltantes
|
### 1. Descubrir repos locales
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /home/lucas/fn_registry # ajustar al PC
|
cd /home/lucas/fn_registry # ajustar al PC
|
||||||
@@ -25,19 +33,7 @@ REPOS=$(find . -name ".git" -type d \
|
|||||||
REPOS=". $REPOS"
|
REPOS=". $REPOS"
|
||||||
```
|
```
|
||||||
|
|
||||||
Despues, despues de `fn sync` (paso 5), hacer **una segunda pasada** para clonar repos `dataforge/<name>` que esten registrados en `pc_locations` o `apps`/`analysis` pero no existan localmente — la metadata vino del API y los repos hay que clonarlos:
|
Solo se actualizan los sub-repos que ya tengan `.git/` localmente. Lo que falte se queda fuera — pull-on-demand por sub-repo.
|
||||||
|
|
||||||
```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
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Para cada repo: stash si dirty, pull --ff-only, pop
|
### 2. Para cada repo: stash si dirty, pull --ff-only, pop
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user