Una forma de lograr esto es mediante el uso de un script, la variable GIT_EDITOR
medio ambiente y la opción dcommit
--edit
.
Guarde lo siguiente en un archivo, vamos a llamarlo 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"
Asegúrese de que el guión es ejecutable: chmod +x svnmessage.sh
. Y ejecutar su dcommit
como:
GIT_EDITOR="/path/to/script/svnmessage.sh" git svn dcommit --edit
La opción --edit
se edit the commit message before committing to SVN
mediante la variable de entorno GIT_EDITOR
para procesar el mensaje de confirmación. Consulte git-svn
y git-var
para obtener más información.
Se puede crear un alias para hacer las cosas un poco más fácil:
git config --global alias.dcommit-edit '!GIT_EDITOR="$HOME/bin/svnmessage.sh" git svn dcommit --edit'
Entonces sólo tiene que utilizar git dcommit-edit
.
El guión se basa en la forma en git-svn.perl
sifones la salida git cat-file
para crear el SVN mensaje. La misma técnica se usa para extraer la información del autor y del autor. Un simple cometer podría parecerse a:
$ git cat-file commit 24aef4f
tree eba872d9caad7246406f310c926427cfc5e73c8d
parent 7dd9de9b5c68b9de1fc3b798edbab2e350ae6eac
author User <[email protected]>54806 -0500
committer User <[email protected]>54806 -0500
foo-27
El guión tendrá típicamente .git/COMMIT_EDITMSG
que se le pasa como parámetro; cuyo contenido contendrá el mensaje de confirmación de Git que se utilizará para el mensaje de confirmación de SVN.
No del todo. Se trata de reescribir el registro cuando haces "git svn dcommit". –
Ya veo. Perdón por malentendido, no tengo experiencia con 'git-svn'. – takeshin