Clean up git-diff-tree 'header' generation
[git.git] / git-commit-script
index f88a51a..57f5333 100755 (executable)
@@ -4,6 +4,7 @@ if [ ! -d $GIT_DIR ]; then
        echo Not a git directory 1>&2
        exit 1
 fi
+git-update-cache -q --refresh -- "$@" || exit 1
 PARENTS="-p HEAD"
 if [ ! -r $GIT_DIR/HEAD ]; then
        if [ -z "$(git-ls-files)" ]; then
@@ -33,12 +34,16 @@ fi
 if [ "$?" != "0" ]
 then
        cat .editmsg
+       rm .editmsg
        exit 1
 fi
 ${VISUAL:-${EDITOR:-vi}} .editmsg
 grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
-[ -s .cmitmsg ] || exit 1
-tree=$(git-write-tree) || exit 1
-commit=$(cat .cmitmsg | git-commit-tree $tree $PARENTS) || exit 1
-echo $commit > $GIT_DIR/HEAD
-rm -f -- $GIT_DIR/MERGE_HEAD
+[ -s .cmitmsg ] && 
+       tree=$(git-write-tree) &&
+       commit=$(cat .cmitmsg | git-commit-tree $tree $PARENTS) &&
+       echo $commit > $GIT_DIR/HEAD &&
+       rm -f -- $GIT_DIR/MERGE_HEAD
+ret="$?"
+rm -f .cmitmsg .editmsg
+exit "$ret"