Une façon d'y arriver est à l'aide d'un script, la variable d'environnement GIT_EDITOR
et l'option dcommit
--edit
.
Enregistrez ce qui suit dans un fichier, nous allons l'appeler svnmessage.sh
:
#!/bin/sh
c=`git rev-parse HEAD`
t=`git cat-file -t $c`
m=`cat "$1"`
if [ "commit" = "$t" ]; then
o=`git cat-file $t $c`
o_a=`echo "$o" | grep '^author '`
o_c=`echo "$o" | grep '^committer '`
author=`echo "$o_a" | sed -e 's/^author \(.*>\).*$/\1/'`
authorts=`echo "$o_a" | sed -e 's/^author .*> \([0-9]\+\) .*$/\1/'`
authordt=`date -d @$authorts +"%Y-%m-%d %H:%M:%S %z"`
committer=`echo "$o_c" | sed -e 's/^committer \(.*>\).*$/\1/'`
committerts=`echo "$o_c" | sed -e 's/^committer .*> \([0-9]\+\) .*$/\1/'`
committerdt=`date -d @$committerts +"%Y-%m-%d %H:%M:%S %z"`
m="$m
-----
Author: $author $authordt
Committer: $committer $committerdt"
fi
echo "$m" > "$1"
Assurez-vous que le script est exécutable: chmod +x svnmessage.sh
. Et lancez votre dcommit
comme:
GIT_EDITOR="/path/to/script/svnmessage.sh" git svn dcommit --edit
L'option --edit
sera edit the commit message before committing to SVN
en utilisant la variable d'environnement GIT_EDITOR
pour le traitement du message de validation. Voir git-svn
et git-var
pour plus d'informations.
Vous pouvez créer un alias pour rendre les choses un peu plus facile:
git config --global alias.dcommit-edit '!GIT_EDITOR="$HOME/bin/svnmessage.sh" git svn dcommit --edit'
Ensuite, il suffit d'utiliser git dcommit-edit
.
Le script repose sur la façon dont git-svn.perl
siphons la sortie git cat-file
pour créer le message de commit SVN. La même technique est utilisée pour extraire l'information de l'auteur et du committer. Un simple commit pourrait ressembler à:
$ git cat-file commit 24aef4f
tree eba872d9caad7246406f310c926427cfc5e73c8d
parent 7dd9de9b5c68b9de1fc3b798edbab2e350ae6eac
author User <[email protected]>54806 -0500
committer User <[email protected]>54806 -0500
foo-27
Le script aura typiquement .git/COMMIT_EDITMSG
qui lui est passé comme paramètre; Le contenu de ce message contiendra le message de validation Git qui sera utilisé pour le message de validation SVN.
Pas tout à fait. Il s'agit de réécrire le journal lorsque vous faites "git svn dcommit". –
Je vois. Désolé pour malentendu, je n'ai aucune expérience avec 'git-svn'. – takeshin