Passa al contenuto principale

Git hygiene Akira

Cleanup branch task/* mergiati

Eseguire periodicamente, ad esempio dopo batch grossi di task mergeati, per ridurre rumore in git branch -r e fetch remoti.

Preview:

./scripts/cleanup_stale_branches.sh --dry-run

Applicazione:

./scripts/cleanup_stale_branches.sh

Lo script:

  • esegue git fetch --prune origin;
  • seleziona solo origin/task/* gia' mergiati in origin/master;
  • prima di cancellare crea e pusha un tag archive/cleanup-task-branches-YYYYMMDD_HHMMSS;
  • cancella i branch remoti con git push origin --delete;
  • cancella anche eventuali branch locali omonimi gia' mergiati.

Recovery

Ogni cleanup crea un tag archive puntato alla base usata per decidere i branch mergiati. Per ripristinare un branch:

git push origin archive/cleanup-task-branches-YYYYMMDD_HHMMSS:refs/heads/task/TASK-NN

Lista tag archive:

git tag -l 'archive/*'

Garbage collection tag archive

La pulizia tag non fa parte del cleanup ordinario. Una volta l'anno si possono rimuovere i tag archive piu' vecchi di 12 mesi dopo verifica manuale:

git tag -l 'archive/cleanup-task-branches-*'

Per cancellare un tag locale e remoto:

git tag -d archive/cleanup-task-branches-YYYYMMDD_HHMMSS
git push origin --delete archive/cleanup-task-branches-YYYYMMDD_HHMMSS

Automazione opzionale

Cron settimanale sul Toolbox:

#!/usr/bin/env bash
set -euo pipefail
cd /home/devcomm/akira
./scripts/cleanup_stale_branches.sh

La modalita' GitHub Actions e' lasciata fuori dal repository per ora: il token standard GITHUB_TOKEN puo' non avere permessi di delete branch sufficienti e Akira preferisce review manuale prima di rimuovere branch remoti.