147 votes

Git : Affiche toutes les modifications apportées à une seule ligne d'un fichier spécifié sur l'ensemble de l'historique git.

J'ai cherché, et je ne suis pas sûr que ce soit possible, mais je vais le faire :

J'ai un fichier (javascript) (disons /lib/client.js) dans lequel j'ai un identifiant unique var identifier = "SOME_IDENTIFIER";

Vous pouvez considérer l'identifiant comme un numéro de version : Périodiquement, nous remplacerons cette variable par un nouvel identifiant.

J'aimerais trouver tous les identificateurs uniques que nous avons utilisés. Comment puis-je faire cela avec git ?

J'imagine qu'il pourrait y avoir un moyen de rechercher dans l'historique git, et d'imprimer la ligne correspondant à "var identifier =" . Je pourrais dédupliquer cette liste manuellement.

Quoi qu'il en soit, j'apprécierais tout point de vue. Je vous remercie.

0voto

starfry Points 639

J'ai voulu dresser la liste de tous les noms d'animaux dont le noyau Linux a été affublé. Ceci est défini dans le fichier Makefile dans le noyau Git repo (bien qu'il ne s'agisse pas de la Historique complet ). Je ne voulais pas m'appuyer sur un numéro de ligne spécifique et je voulais le contenu réel de la ligne plutôt que les refs du commit, et je voulais supprimer les doublons sans affecter l'ordre. J'en suis arrivé à ceci :

git log --format=format:%H Makefile | xargs -I{} git show {}:Makefile | awk -F '=' '/^NAME = /{print $NF}' | awk '!x[$0]++'

Il utilise d'abord git log pour obtenir les modifications affectant ce fichier, puis transmet le contenu du fichier, obtenu avec git show , à ce ref à travers awk qui extrait la ligne d'intérêt et un 2ème awk dé-duplicates la liste.

Au cas où cela pourrait être utile à quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X