las ich another post, die eine etwas arbeiten prepare-commit-msg
vorgesehen, ich es ein wenig geändert:Wie erstelle ich einen Git-Hook, um Commit-Nachrichten mit dem Branch-Namen voranzustellen?
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
# todo:
# * breaks merge commit message
# * breaks git commit --amend
NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description)
echo "[$NAME]"' '$(cat "$1") > "$1"
if [ -n "$DESCRIPTION" ]
then
echo "" >> "$1"
echo $DESCRIPTION >> "$1"
fi
Unter dem "glücklichen Weg", das heißt:
git add -A
git commit -m 'Some commit message'
funktioniert wie erwartet, Ausgang:
some-modular-app git:test-commit-hooks ❯ log | grep 9406dfb
* 9406dfb - [test-commit-hooks] Make edit (2 hours ago) <mbigras>
Wie es zwei Fälle gibt, die nicht funktionieren, wenn Sie verwenden:
1.
git commit
eingeben vim dann die Zeilenumbrüche aus irgendeinem Grund gelöscht werden, die man zwingt die Nachricht zu bearbeiten, um die Kommentare zu ihrem eigenen Spiel zu setzen, wie unten dargestellt:
2.
git commit --amend
Wird das gleiche Problem wie 1. verursachen, sondern auch prepends es ein zweites [branch-name]
, auch unter
gezeigt Wie konnte ich das Skript ändern, um die Problem Anwendungsfälle 1 und 2 zu lösen?
Dank
Die Antwort ist in [einen Kommentar in derselben Q & A] versteckt (http://stackoverflow.com/questions/5894946/how -to-add-gits-filename-to-the-commit-Nachricht # comment31820573_11524807). Siehe auch http://git-flame.blogspot.com/2013/06/checking-current-branch-programatically.html wie in http://stackoverflow.com/a/1593487/1256452 beschrieben – torek