web-dev-qa-db-fra.com

Liste des noms, dates et messages des balises git

Comment répertorier le nom, la date et le message de la balise pour toutes les balises?

Il semble que la séparation de git de la logique d'affichage pour les validations via git log et les balises à travers git tag rend difficile la liste du nom de la balise, de la date de la balise et du message de la balise.

Je peux afficher la date, le nom du tag et le message de validation en utilisant git log --tags --show-notes --simplify-by-decoration --pretty="format:%ai %d %s"

J'ai inspecté http://opensource.Apple.com/source/Git/Git-26/src/git-htmldocs/pretty-formats.txt mais je n'ai vu aucune option pour afficher le message de balise.

Je peux afficher le nom de la balise et 5 lignes de message de balise en utilisant git tag -n5.

Mais pour obtenir les trois informations, il semblerait que des scripts noueux dépassent mes capacités.

29
kayaker243

Vous souhaitez utiliser le for-each-ref commande. Malheureusement, il n'est que légèrement moins convivial que filter-branch

Notez que les informations telles que la date du tag et le tagueur ne sont disponibles que pour les tags annotés.

Voici un prototype de base. Notez que le format = peut être un script Shell complet et devrait probablement dépendre de la complexité de la sortie. Ils ont quelques exemples spécifiquement pour les balises dans la documentation for-each-ref

git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags
26
Andrew C

git show --tags affichera au moins toutes les informations pertinentes sur vos tags. Vous pourrez peut-être trouver un --pretty=format: séquence à partir de là.

5
Christopher

Que diriez-vous d'un format un peu plus joli?

# ~/.gitconfig
[alias]
tags="for-each-ref --sort=taggerdate --format=%(color:green)%(subject)%(color:reset), tagged: %(refname:short)\n%(taggerdate)\n%(taggername) %(taggeremail)\n\n%(contents:body)\n' refs/tags"

$ git tags 

Release 1.0.1, tagged: 1.0.1
Wed Jul 4 20:16:05 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>

Changelog
- Implement Contentful webhooks to purge internal and CF caches.
- Implement CloudFlareService.
- Fix Contentful's mapping concern usage/namespace. #73
- Temporarily enforce https in og:url property. #103
- Fix entry callback issue with Contentful client. #99
- Fix issue with PPM docker build. #96

Release 1.1.2, tagged: 1.1.2
Thu Jul 12 21:26:29 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>

Changelog
- Fix GA share event issue with AddThis. #132
- Optimize OpenGraph protocol tags for articles. #130
- Optimize Twitter card tags. #131
- Fix HTML validation errors as much as possible. #127


Release 1.1.3, tagged: 1.1.3
Mon Jul 16 22:49:05 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>

Changelog
- Implement cross-device/browser fav/home icons. #137, #138
- Minify HTML output of all pages. #139
- Check for lighthouse score in build pipeline. #30
- Drop AddThis in favor of in-house ShareBar. #116
- Minor article OG tag adjustments.
1
sepehr

Je ne sais pas s'il y a moyen de

liste niquement le nom de la balise, la date de la balise et le message de la balise pour toutes les balises en utilisant uniquement la syntaxe git.

Mais un simple grep fera l'affaire:

git show --tags |grep "^tag " -A4

Remarquez que je spécifie 4 lignes de contexte de fin après la correspondance, car la sortie standard affiche le nom de la balise, la date de la balise et le message de la balise sur une ligne distincte.

Si vous avez besoin de traiter des messages de balises multilignes, je préférerais utiliser la tuyauterie pour awk, ce qui est légèrement plus lourd:

git show --tags |awk "/^tag /,/-----BEGIN PGP SIGNATURE-----|commit /" |egrep -v "^$" |sed -E "s/^-----BEGIN PGP SIGNATURE-----.*|^commit.*/-/"

Cela fonctionnera tant que le message de balise est suivi soit par la SIGNATURE PGP soit par le message de validation, ce qui est afaik toutes les situations possibles. Cependant, vous pouvez facilement adapter le dernier grep pour couvrir d'autres situations (s'il devait y en avoir).

1
Claudio Floreani

Si vous souhaitez récupérer les derniers détails de la balise, utilisez l'indicateur --sort, Rappelez-vous que si vous triez les dates, utilisez "-" avant la date pour répertorier la plus récente en premier.

Par exemple, je voulais la dernière description de la balise (car il s'agit du dernier nom de la version), j'ai utilisé --format pour simplement extraire le sujet de la balise et la trier en fonction de la date de la balise (la plus récente en premier). Voici la commande pour cela.

git for-each-ref --sort=-taggerdate --format '%(subject)' refs/tags --count=1

0
Omisha gupta