Jednym ze sposobów osiągnięcia tego celu jest za pomocą skryptu, zmiennej GIT_EDITOR
środowiska i opcji dcommit
--edit
.
Zapisz następujący tekst w pliku, nazwijmy to 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"
Upewnij się, że skrypt jest wykonywalny: chmod +x svnmessage.sh
. I uruchomić dcommit
jak:
GIT_EDITOR="/path/to/script/svnmessage.sh" git svn dcommit --edit
Opcja --edit
będzie edit the commit message before committing to SVN
użyciu zmiennej środowiskowej GIT_EDITOR
na przetwarzanie wiadomość popełnienia. Aby uzyskać więcej informacji, patrz git-svn
i git-var
.
Można by utworzyć alias do rzeczy nieco prostsze:
git config --global alias.dcommit-edit '!GIT_EDITOR="$HOME/bin/svnmessage.sh" git svn dcommit --edit'
Następnie wystarczy użyć git dcommit-edit
.
Scenariusz opiera się na jak git-svn.perl
syfony wyjście git cat-file
do tworzenia SVN popełnienia wiadomość. Ta sama technika służy do wyodrębniania informacji o autorze i przekazującym dane. Prosty popełnić może wyglądać następująco:
$ git cat-file commit 24aef4f
tree eba872d9caad7246406f310c926427cfc5e73c8d
parent 7dd9de9b5c68b9de1fc3b798edbab2e350ae6eac
author User <[email protected]>54806 -0500
committer User <[email protected]>54806 -0500
foo-27
Skrypt zazwyczaj mają .git/COMMIT_EDITMSG
przeszedł do niego jako parametr; którego treść będzie zawierać komunikat zatwierdzenia Git, który będzie używany dla komunikatu zatwierdzenia SVN.
Niezupełnie. Chodzi o przepisanie dziennika, gdy wykonujesz polecenie "git svn dcommit". –
Rozumiem. Przepraszam za nieporozumienie, nie mam doświadczenia z 'git-svn'. – takeshin