[Git] Comment renommer l’utilisateur d’un commit ?

Bonjour à tous !

Plus trop de nouvelles du projets ces derniers mois …
Mes études me prennent tout mon temps.

Aujourd’hui, j’ai décidé de nettoyer un peu le dépôt git d’Opencomp. En effet, au fil du temps, on fait quelques erreurs lorsque l’on Commit. Par exemple, sur le dépôt d’Opencomp, plusieurs Commit appartenant à des utilisateurs identiques apparaissaient avec des noms d’utilisateurs différents !

Cela se produit par exemple si l’on Commit sans avoir défini son git.username ou alors si l’on s’est trompé lors de la définition de cette variable mais que l’on a déjà Commité et envoyé sur le serveur distant …

Alors, comment faire pour changer l’auteur d’un Commmit ?

Dans le répertoire du dépôt Git, créez un fichier changeuser.sh qui contiendra les lignes suivantes :

#!/bin/sh

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "LeNomDutilisateurAmodifier" ];
        then
                GIT_COMMITTER_NAME="LeNouveauNomDutilisateur";
                GIT_AUTHOR_NAME="LeNouveauNomDutilisateur";
                GIT_COMMITTER_EMAIL="[email protected]";
                GIT_AUTHOR_EMAIL="[email protected]";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

Donnez les droits d’exécution au script pour l’utilisateur courant :

chmod u+x changeuser.sh

Exécutez le script :

./changeuser.sh

Supprimez le fichier du cache des références de Git :

rm -rf .git/refs/original/

Poussez ensuite les nouvelles modifications vers votre dépôt distant :

git push -f

Si vous avez plusieurs utilisateurs à modifier, vous pouvez ré-effectuer la procédure autant de fois que vous le souhaitez.

A propos Jean Traullé

Passionné par l'informatique et les nouvelles technos, miagiste, papa de opencomp.fr, #sysadm, #ProxmoxVE, #Docker, #TYPO3, #CakePHP enthousiaste 😊
Ce contenu a été publié dans Non classé, avec comme mot(s)-clé(s) , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *