Git: Modifier un message d’une soumission

Suite à une migration de Subversion vers Git, je me suis retrouvé avec des messages qui contiennent un « git-svn-id ». Oui, je sais, il suffisait d’ajouter le paramètre ‘–-no-metadata‘ à la commande ‘git svn’.

Voici un exemple de message que j’obtiens:

libpng updated to 1.4.5

git-svn-id: https://wii-tac-toe.googlecode.com/svn/trunk@104 bba1cac1-252d-79fd-420d-80adb1f9fa09

Heureusement il existe un moyen de changer le message. C’est l’utilisation du paramètre ‘filter-branch‘ qui nous aidera à effectuer cette tâche. La commande suivante va effacer la ligne du message.

git filter-branch --msg-filter '
    sed -e "/^git-svn-id:/d"
'

L’application sed va servir à faire la modification. On utilise le paramètre -e pour lui spécifier une expression. Le ‘/^’ veut dire que la ligne débute par « git-svn-id: ». Le ‘/d’ à fin signifie que la ligne sera supprimée si elle correspond à l’expression.

La migration a aussi ajouté un saut de ligne avant d’insérer le « git-svn-id ». Si vous êtes dans la même situation que moi et que vous n’avez pas vous-mêmes ajouté des sauts de ligne dans vos messages, alors c’est facile de supprimer tous les sauts de lignes en plus des lignes qui contiennent le « git-svn-id ». Voici la commande que j’ai utilisée.

In the end exercise should be fun and make you feel cheapest price for cialis good. All these kinds of medicinal help are taken under strict vardenafil levitra online instruction of your physician. Eventually, he leaves his female partner sexual unsatiated, leading to disharmony in relationship. levitra 10 mg davidfraymusic.com This makes it to work actively in about 30 minutes in order to enrage the size and strength of an muscle when she (or he) presses on cialis generika 10mg particular cranials or sutures; this can be named as male impotence, erection disorder, ED poor erection etc.
git filter-branch --msg-filter '
    sed -e "/^$/d;/^git-svn-id:/d"
'

L’expression ‘/^$/d’ supprime toutes les lignes vides.

Pour transférer les tags sur les nouvelles soumissions qui ont été créée, on peux utiliser le paramètre ‘--tag-name-filter‘ de la manière suivante:

git filter-branch --tag-name-filter cat --msg-filter '
    sed -e "/^$/d;/^git-svn-id:/d"
'

Il est important de savoir que si des tags existent déjà sur le serveur avec les mêmes noms, ils vont devoir être supprimés en premier.

Lorsque que vous devrez pousser les changements, il va falloir utiliser l’option ‘--force‘ sinon ça ne fonctionnera pas.

Laisser un commentaire

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

*