- settings.json: enable caveman marketplace+plugin, effortLevel=high - commands/git-branch + git-push: refactor docs - skills/parallel-fix-issues: SKILL.md + scripts updates
4.0 KiB
Command: git push (TBD)
Integra cambios a master y publica. Soporta ramas issue/* y quick/*.
La fase final (pull --rebase master + merge --no-ff + git push + git branch -d) la hace tbd_branch_finish_bash_infra del registry. Tests y commits no los hace la función — los corre el asistente porque dependen del stack.
Pasos del asistente
1. Verificar rama actual y estado
git branch --show-current
git status --short
Si estamos en issue/* o quick/*
Continuar al paso 2.
Si estamos en master con cambios pendientes
Crear rama primero:
- Preguntar si el cambio está asociado a un issue.
- Si es issue: pedir
<NNNN>y<slug>, llamar/git-branch issue <NNNN> <slug>. - Si es quick: pedir
<slug>, llamar/git-branch quick <slug>.
No inventar números de issue. Solo usar issue/ si existe en dev/issues/.
Si estamos en master sin cambios
STOP: nada que publicar.
2. Revisar cambios y crear commits atómicos
git status --short
git diff --stat
git diff
Crear commits atómicos por bloque lógico. Cada commit agrupa cambios de la misma naturaleza:
git add <archivos_del_bloque_1>
git commit -m "<tipo>: <resumen breve>" -m "Descripción larga en español: qué cambia, por qué, impacto, alcance."
git add <archivos_del_bloque_2>
git commit -m "<tipo>: <resumen breve>" -m "Descripción larga en español."
Reglas críticas:
- No WIP: nunca commitear "wip", "tmp", código a medias.
- No mezclar tipos: no combinar
feat:+test:en un mismo commit. - No squash: los commits individuales se preservan via
--no-ff. Usargit log --first-parent masterpara ver merges. - No rebase interactivo.
3. Ejecutar tests
Obligatorio antes de mergear. Comando depende del stack:
| Stack | Comando |
|---|---|
| Go | go test ./... (o con tags si aplica: -tags goolm / -tags fts5) |
| C++ | ctest --test-dir cpp/build |
| Python | pytest |
| Sin tests aplicables (solo docs/config) | indicar al usuario y continuar |
Si fallan → STOP y corregir. Si pasan → paso 4.
4. Evaluar feature flags
Feature flag = código terminado y testeado, no código a medias.
Si se modificó dev/feature_flags.json o el cambio es parte de feature multi-fase:
- Verificar que
dev/feature_flags.jsonesté actualizado. - Confirmar estado correcto del flag (
enabled: true/false). - Incluir el archivo en el commit correspondiente (no commit separado).
Si autocontenido, saltar.
5. Cerrar la rama (registry)
source /home/lucas/fn_registry/bash/functions/infra/tbd_branch_finish.sh
tbd_branch_finish "<descripción corta del merge>"
La función:
- Verifica working tree limpio.
- Autodetecta
master/main. git checkout <base>+git pull --rebase.git merge --no-ff <rama> -m "merge: <rama> — <título>".- Si conflicto → exit 2, deja al usuario resolver con
git add+git commit+ retry. git push.git branch -d <rama>.
6. Confirmar al usuario
La función ya imprime Rama '<rama>' integrada a <base> y publicada. Rama local eliminada. Repetirlo al usuario.
Convención de commits
feat:nueva funcionalidadfix:corrección de errorrefactor:cambio estructural sin cambio funcionaldocs:documentaciónchore:mantenimientotest:tests nuevos o modificadosmerge:commit de merge (lo generatbd_branch_finishcon--no-ff)
Regla de mensajes
- Título corto resume el bloque.
- Cuerpo en español: qué se cambió, por qué, qué impacto, qué no se tocó.
Checklist
- Cambios commiteados en rama
issue/*oquick/*. - Cambios distintos en commits diferentes.
- Cada commit con descripción larga en español.
- Tests pasando (o no aplican).
- Feature flags evaluados (o no aplican).
tbd_branch_finishejecutado con éxito.
Para tocar la lógica de cierre
Editar tbd_branch_finish_bash_infra en bash/functions/infra/tbd_branch_finish.sh. La parte de tests y commits se queda en este comando porque depende del stack.