L'idée, c'est de supprimer tous les tags datant de plus de 21 jours (21 ou autre, c'est pour l'exemple).
# Today's timestamp
current_date=$(date -d "00:00" +%s)
# For each tag ...
while IFS= read -r tag; do
# ${tag} syntax is "name date"
release_version="$(echo "${tag}" | cut -d' ' -f1)"
release_date=$(date -d $(echo "${tag}" | cut -d' ' -f2) +%s)
# The number of days between today and when the tag was created
days=$(( (current_date - release_date) / (24 * 3600) ))
if [ ${days} -gt 21 ]; then
git tag --delete "${release_version}"
git push --delete origin "${release_version}"
fi
done < <(git for-each-ref --sort=-taggerdate --format '%(refname:short) %(taggerdate:short)' refs/tags | grep -E "(^alpha*)")
La dernière ligne est la commande permettant de lister les tags de façon antichronologique.
Pour mes besoins, je filtre sur les tags commençant par "alpha-" seulement, à adapter selon les besoins.
Sources :