5 commandes Git pour faire une retrospective annuelle de votre projet

git

Ça y est, nous sommes en 2024 ! En tant que développeur, le début de cette nouvelle année est un moment idéal pour une rétrospective approfondie sur les péripéties du code de votre équipe (ou le votre si vous codez seul) au cours de l'année passée !

Aujourd'hui, on va s'amuser avec quelques commandes Git qui vous permettront de dévoiler des statistiques intéressantes et / ou amusantes de votre repository au cours de l'année passée ! Je vais utiliser l'année 2023 dans tous les exemples ci-dessous, mais n'hésitez pas à personnaliser les dates pour qu'elles correspondent à vos besoins

Préparez-vous à extraire des insights précieux et à donner une toute nouvelle dimension à votre réflexion sur le code ! 🚀📊

1. Nombre de commits

Pour amorcer notre plongée dans les statistiques de votre projet, commençons par une donnée toute bête mais fondamentale : le nombre total de commits:

git rev-list --count --no-merges --since="2023-01-01" --until="2023-12-31" HEAD

2. Nombre de commits par contributeur

Maintenant que nous avons établi le nombre total de commits, plongeons plus profondément en explorant qui a contribué le plus à votre projet. La commande suivante vous donnera une liste détaillée du nombre de commits par auteur au cours de l'année passée :

git log --no-merges --since="2023-01-01" --until="2023-12-31" --pretty=format:"%ae" | awk -F@ '{print $1}' | sort | uniq -c | sort -nr

3. Les jours de l'année avec le plus de commits :

Les statistiques ne se limitent pas seulement aux totaux. Découvrons maintenant quels jours de l'année ont été les plus actifs en termes de commits. Cette commande vous révélera les 10 jours les plus trépidants de votre historique :

git log --no-merges --since="2023-01-01" --until="2023-12-31" --format="%ad" --date=short | sort | uniq -c | sort -nr | head -10

4. Nombre de lignes ajoutées et supprimées

Un commit, ça peut contenir des centaines de modifications comme de tout petits changements, c'est pourquoi le nombre de ligne peut avoir un plus de sens si vous voulez mesurer finement les efforts de code fournis !

Cette commande vous fournira le nombre total de lignes ajoutées et supprimées au cours de l'année :

git log --no-merges --since="2023-01-01" --until="2023-12-31" --pretty=tformat: --numstat | grep -v "package-lock.json" | awk '{add += $1; del += $2} END {printf "Ajoutées: %s\nSupprimées: %s\n", add, del}' 

image

N.B: J'ai exclu le fichier package-lock.json des statistiques car j'estime que les lignes de ce fichier ne devraient pas compter. Vous pouvez ajouter d'autres exclusions en rajoutant des | grep -v "<fichier ou dossier ou expression à exclure>"

N.B 2: Vous vous demandez ce qu'est un fichier package-lock.json ? Ça tombe bien, j'ai écrit un article dédié au package-lock.json sur ce blog 😉

5. Nombre de lignes ajoutées et supprimées par chaque contributeur

Dernière statistique très intéressante si vous travaillez en équipe: qui a le plus codé en nombre de lignes ?

Je n'ai pas réussi à sortir cette statistique en une seule commande, mais je vous ai concocté un script bash qui permet de reproduire la statistique précédente pour chacun des auteurs présent dans le repository

Notez que les résultats sont triés par ordre alphabétique !

#!/bin/bash

# Get a list of authors
authors=$(git log --format="%ae" | sort -u)

# Run a command for each author
for author in $authors; do
  stats=$(git log --no-merges --since="2023-01-01" --until="2023-12-31" --author="$author" --pretty=tformat: --numstat | grep -v "package-lock.json" | awk '{add += $1; del += $2} END {printf "%s %s", add, del}' add=0 del=0)

  # Print only if either lines added or deleted is non-zero
  if [[ $stats != "0 0" ]]; then
    echo "Statistics for author: $author"
    echo "Ajoutées: $(echo $stats | cut -d' ' -f1)"
    echo "Supprimées: $(echo $stats | cut -d' ' -f2)"
    echo
  fi
done

C'est tout pour aujourd'hui !

En analysant le nombre de commits, les contributions par auteur, les jours les plus actifs, ainsi que les lignes ajoutées et supprimées, vous avez gagné un aperçu précieux sur l'évolution de votre code au cours de l'année passée

Si vous avez d'autres idées ou si vous utilisez des commandes spécifiques que vous aimeriez partager, n'hésitez pas à les laisser en commentaire ci-dessous en vous connectant avec GitHub

Continuez à explorer, à coder, et à tirer le meilleur parti de votre repository Git. Bonne rétrospective et bonne année de développement à vous ! 🚀📊