Git : Supprimer les tags datant de plus de N jours

Ce morceau de code supprimera tous les tags datant de plus de 21 jours.

À adapter selon les besoins :

  • Ligne 13 : la limite du nombre de jours ;

  • Ligne 18 : le filtrage (optionnel) sur le nom des tags (seuls ceux commençant par alpha- sont pris en compte, dans cet exemple).

 1# Today's timestamp
 2current_date=$(date -d "00:00" +%s)
 3
 4# For each tag …
 5while IFS= read -r tag; do
 6    # ${tag} syntax is "name date"
 7    release_version="$(echo "${tag}" | cut -d' ' -f1)"
 8    release_date=$(date -d "$(echo "${tag}" | cut -d' ' -f2)"  +%s)
 9
10    # The number of days between today and when the tag was created
11    days=$(( (current_date - release_date) / (24 * 3600) ))
12
13    if [ ${days} -gt 21 ]; then
14        git tag --delete "${release_version}"
15        git push --delete origin "${release_version}" 
16    fi
17done < <(git for-each-ref --sort=-taggerdate --format '%(refname:short) %(taggerdate:short)' refs/tags \
18    | grep -E "(^alpha*)")

🎣 Sources

📜 Historique

2024-01-31

Déplacement de l’article depuis le blog.

2020-08-08

Premier jet.