git log
a une option Nice --format
pour spécifier le formatage de la sortie.
Mais git blame
ne semble pas avoir d’équivalent, bien que la sortie par défaut de blame
ne soit pas tout à fait conviviale. J'aimerais voir beaucoup moins.
Par exemple, au lieu de:
5600cab7 js/sidebar/VehicleGrid.js (Rene Saarsoo 2009-10-08 18:55:24 +0000 127) if (x > y) {
b5f1040c js/map/monitoring/VehicleGrid.js (Mihkel Muhkel 2010-05-31 07:20:13 +0000 128) return x;
Je voudrais avoir:
5600cab7 Rene Saarsoo (1 year ago) 127: if (x > y) {
b5f1040c Mihkel Muhkel (5 months ago) 128: return x;
Je suppose que je pourrais écrire un script pour analyser la sortie de git blame --porcelain
, mais étant donné la sortie par défaut épouvantable de blame
, j’ai le sentiment que quelqu'un doit déjà avoir fait quelque chose à ce sujet.
Des idées? Ou des conseils pour mettre en œuvre un tel script?
Edit: Résolu en écrivant petit script .
Vous pouvez utiliser un autre format de sortie: git annotate
ou git blame -c
.
Vous pouvez modifier le formatage des dates avec l'option --date=<format>
(ou la variable de configuration blame.date
), où <format>
est l'un des relatif, local, par défaut, iso, rfc, short . Voir git-blame et git-log pages de manuel pour plus de détails.
Mise à jour de Git 2.18 (T2 2018): "git blame
" apprend à ne pas mettre en évidence les métadonnées sans intérêt de la validation d'origine sur des lignes identiques à la précédente, ainsi que les lignes Paint de couleurs différentes en fonction de l'âge du commit.
Voir commit 0dc95a4 _, commit 25d5f52 , commit cdc2d5f (24 avril 2018) de Stefan Beller (stefanbeller
) .
(Fusionnée par Junio C Hamano - gitster
- à commit 3d24129 , 30 mai 2018)
builtin/blame
: ajouter une nouvelle configuration de schéma de couleurAjoutez une option de configuration qui permet de sélectionner le jeu de couleurs par défaut pour le responsable. La ligne de commande a toujours la priorité sur la configuration.
git config
rapporte maintenant:
blame.coloring::
Cela détermine le schéma de couleur à appliquer à la sortie de la faute.
Cela peut être 'repeatedLines
', 'highlightRecent
' ou 'none
' qui est la valeur par défaut.
builtin/blame: met en évidence les lignes récemment modifiées
Choisissez une couleur différente pour les dates et imitez le «refroidissement» en fonction de l'âge.
Comme pour le patch précédent, cela offre l'option de ligne de commande '
--color-by-age
' pour activer ce mode et l'option de configuration 'color.blame.highlightrecent
' pour sélectionner les couleurs.
La documentation ajoute maintenant:
color.blame.highlightRecent
Cela peut être utilisé pour colorer les métadonnées d'une ligne incriminée en fonction de son âge.
Ce paramètre doit être défini sur une liste de paramètres de couleur et de date séparés par des virgules, commençant et se terminant par une couleur. Les dates doivent être définies du plus ancien au plus récent.
Les métadonnées seront colorées en fonction des couleurs si la ligne a été introduite avant l’horodatage donné, écrasant ainsi les couleurs plus anciennes horodatées.
Au lieu d’un horodatage absolu, les horodatages relatifs fonctionnent également, par ex. 2.weeks.ago est valable pour tout ce qui est âgé de plus de 2 semaines.
La valeur par défaut est '
blue,12 month ago,white,1 month ago,red
', qui colore tout ce qui date de plus d'un an en bleu, les modifications récentes entre un mois et un an sont conservées en blanc et les lignes introduites au cours du dernier mois sont en rouge.
builtin/blame
: atténuer les lignes de métadonnées sans intérêtLorsque vous utilisez
git-blame
, de nombreuses lignes contiennent des informations redondantes. Par exemple, dans les segments composés de plusieurs lignes, les métadonnées (nom de validation, auteur, date) sont répétées.
Un lecteur peut ne pas être intéressé par ceux-ci, alors offrez une option pour colorer différemment les informations répétées à partir de la ligne précédente.
Traditionnellement, nous utilisons CYAN pour les lignes moins intéressantes que d’autres (par exemple, en-tête de morceau), alors allez-y.L'option de ligne de commande '
--color-lines
' déclenchera la coloration des lignes répétées et l'option de configuration 'color.blame.colorLines
' est fournie pour sélectionner la couleur.
La définition de l'option de configuration ne signifie pas que les lignes répétées sont colorées.
Réponse originale 2010
Étant donné que l’interface Web telle que Trac ou Redmine intègre les résultats git blame
, je suppose qu’une telle analyse a déjà été effectuée.
Vous pouvez voir dans ce Redmine Defect 3832 un exemple avec ce script Ruby:
Pour moi, l'option -s fonctionne, car tout ce dont j'ai besoin est l'ID SHA1, après quoi je consulte le commit pour plus de détails. Un script semble définitivement exagéré. Est-il possible que le drapeau -s ne soit pas disponible il y a un an?
Étant donné que git log
fournit beaucoup plus d'options de personnalisation pour la sortie, vous pouvez combiner git blame
, awk
, xargs
et git log
pour obtenir ce que vous voulez. Par exemple.
git --no-pager blame <filepath> -L1,+1 --porcelain | awk 'NR==1 {print $1}' | xargs git --no-pager log -1 --pretty=format:"%h - (%cd) %s - %an" --date=relative
Cela génère quelque chose comme ceci:
f8a66e80c - (5 months ago) Add gem: devise - elquimista
En gros, ce que git blame
et awk
font ci-dessus consiste à obtenir un SHA de validation complet, et xargs
le transmet à git log
en tant qu'argument.