Here is a prepare-commit-msg hook to make commit messages from ChangeLog
entries.

Paolo
#!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by git-commit with the name of the file that has the
# commit message, followed by the description of the commit
# message's source.  The hook's purpose is to edit the commit
# message file.  If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, make this file executable.

make_changelog ()
{
  git diff "$@" -- ChangeLog | sed -n \
    -e '/^@@/,/^+/ {' \
    -e '  s/^   //p' \
    -e '  t' \
    -e '}' \
    -e '/^diff/,/^@@/ d' \
    -e 's/^+    //p' \
    -e t | sed -e '1,/^./!b' -e '//!b' -e '/^\*/{;x;p;p;x;b;}' -e 'p;x;p;x;d'
}

case "$2${3+ }$3" in
  merge)
    sed -i '/^Conflicts:/,/#/!b;s/^/# &/;s/^# #/#/' "$1" ;;

  "")
    (echo; echo; make_changelog --cached; grep '^.' "$1") > "$1".tmp
    mv "$1".tmp "$1" ;;

  *) ;;
esac

Reply via email to