J'écris un script pour analyser les changements qui ont été faits dans un repo git. À un certain moment je à itérer sur tous les commits et obtenir ces informations sur chacun d'eux:Exécution de git diff-tree avec --numstat et --name-status
- Engagez ID
- Date de
- le message de validation
- ...
- Fichiers modifiés
- Nom de fichier
- Type de modification (Ajouté/Modifié/Retiré/Renommé)
- Nouveau nom du fichier (dans le cas où le type de changement est "Rebaptisé")
- Nombre de lignes ajouté
- Nombre de lignes supprimées
Je reçois la validation des messages et les dates git log
. Le problème que j'ai avec les fichiers.
Si je ne veux pas recueillir le nombre de lignes ajouté/enlevé, je voudrais simplement utiliser
git diff-tree --no-commit-id --name-status -M -r abcd12345
La sortie serait quelque chose comme
A Readme.md
M src/something.js
D src/somethingelse.js
R100 tests/a/file.js tests/b/file.js
Ce que je peux analyser et lire par programme.
Pour obtenir des informations sur les lignes ajoutées/supprimés, je pourrais utiliser ceci:
git diff-tree -M -r --numstat abcd12345
La sortie serait comme:
abcd12345
82 0 Readme.md
41 98 src/something.js
0 64 src/somethingelse.js
0 0 tests/{a => b}/file.js
Ce qui est pas lisible par machine pour les fichiers renommés.
Ma question est: Y at-il un moyen de combiner ces deux commandes? Il semble que je ne puisse pas utiliser --numstat
avec --name-status
.
Je peux exécuter deux commandes séparées et fusionner le résultat dans mon script. Dans ce cas, y a-t-il d'autres commutateurs que je peux utiliser pour rendre le résultat de la deuxième commande plus lisible par machine?
Merci.
Ne connaissait pas '-z'. Très utile, merci :) –