#!/bin/sh
#
# Copyright (c) 2005 Linus Torvalds
#

. git-sh-setup-script || die "Not a git archive"

usage () {
	die 'git commit [-a]  [-m <message>] [-F <logfile>] [(-C|-c) <commit>] [<path>...]'
}

all= logfile= use_commit= no_edit= log_given= log_message=
while case "$#" in 0) break;; esac
do
  case "$1" in
  -a|--a|--al|--all)
    all=t
    shift ;;
  -F=*|--f=*|--fi=*|--fil=*|--file=*)
    log_given=t$log_given
    logfile=`expr "$1" : '-[^=]*=\(.*\)'`
    no_edit=t
    shift ;;
  -F|--f|--fi|--fil|--file)
    case "$#" in 1) usage ;; esac; shift
    log_given=t$log_given
    logfile="$1"
    no_edit=t
    shift ;;
  -m=*|--m=*|--me=*|--mes=*|--mess=*|--messa=*|--messag=*|--message=*)
    log_given=t$log_given
    log_message=`expr "$1" : '-[^=]*=\(.*\)'`
    no_edit=t
    shift ;;
  -m|--m|--me|--mes|--mess|--messa|--messag|--message)
    case "$#" in 1) usage ;; esac; shift
    log_given=t$log_given
    log_message="$1"
    no_edit=t
    shift ;;
  -c=*|--ree=*|--reed=*|--reedi=*|--reedit=*|--reedit-=*|--reedit-m=*|\
  --reedit-me=*|--reedit-mes=*|--reedit-mess=*|--reedit-messa=*|\
  --reedit-messag=*|--reedit-message=*)
    log_given=t$log_given
    use_commit=`expr "$1" : '-[^=]*=\(.*\)'`
    shift ;;
  -c|--ree|--reed|--reedi|--reedit|--reedit-|--reedit-m|--reedit-me|\
  --reedit-mes|--reedit-mess|--reedit-messa|--reedit-messag|--reedit-message)
    case "$#" in 1) usage ;; esac; shift
    log_given=t$log_given
    use_commit="$1"
    shift ;;
  -C=*|--reu=*|--reus=*|--reuse=*|--reuse-=*|--reuse-m=*|--reuse-me=*|\
  --reuse-mes=*|--reuse-mess=*|--reuse-messa=*|--reuse-messag=*|\
  --reuse-message=*)
    log_given=t$log_given
    use_commit=`expr "$1" : '-[^=]*=\(.*\)'`
    no_edit=t
    shift ;;
  -C|--reu|--reus|--reuse|--reuse-|--reuse-m|--reuse-me|--reuse-mes|\
  --reuse-mess|--reuse-messa|--reuse-messag|--reuse-message)
    case "$#" in 1) usage ;; esac; shift
    log_given=t$log_given
    use_commit="$1"
    no_edit=t
    shift ;;
  --)
    shift
    break ;;
  -*)
     usage ;;
  *)
    break ;;
  esac
done

case "$log_given" in
tt*)
  die "Only one of -c/-C/-F/-m can be used." ;;
esac

case "$all" in
t)
	git-diff-files --name-only -z |
	xargs -0 git-update-cache -q -- || exit 1 ;;
esac
git-update-cache -q --refresh -- "$@" || exit 1

PARENTS="-p HEAD"
if [ ! -r "$GIT_DIR/HEAD" ]; then
	if [ -z "$(git-ls-files)" ]; then
		echo Nothing to commit 1>&2
		exit 1
	fi
	{
		echo "#"
		echo "# Initial commit"
		case "$no_edit" in
		t) echo "# (ignoring your commit message for initial commit)"
		   no_edit= 
		esac
		echo "#"
		git-ls-files | sed 's/^/# New file: /'
		echo "#"
	} >.editmsg
	PARENTS=""
	no_edit=
else
	if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
		echo "#"
		echo "# It looks like your may be committing a MERGE."
		echo "# If this is not correct, please remove the file"
		echo "#	$GIT_DIR/MERGE_HEAD"
		echo "# and try again"
		case "$no_edit" in
		t) echo "# (ignoring your commit message for merge commit)"
		   no_edit= 
		esac
		echo "#"
		PARENTS="-p HEAD -p MERGE_HEAD"
	elif test "$log_message" != ''
	then
		echo "$log_message"
	elif test "$logfile" != ""
	then
		if test "$logfile" = -
		then
			test -t 0 &&
			echo >&2 "(reading log message from standard input)"
			cat
		else
			cat <"$logfile"
		fi
	elif test "$use_commit" != ""
	then
		pick_author_script='
		/^author /{
			h
			s/^author \([^<]*\) <[^>]*> .*$/\1/
			s/'\''/'\''\'\'\''/g
			s/.*/GIT_AUTHOR_NAME='\''&'\''/p

			g
			s/^author [^<]* <\([^>]*\)> .*$/\1/
			s/'\''/'\''\'\'\''/g
			s/.*/GIT_AUTHOR_EMAIL='\''&'\''/p

			g
			s/^author [^<]* <[^>]*> \(.*\)$/\1/
			s/'\''/'\''\'\'\''/g
			s/.*/GIT_AUTHOR_DATE='\''&'\''/p

			q
		}
		'
		set_author_env=`git-cat-file commit "$use_commit" |
		sed -ne "$pick_author_script"`
		eval "$set_author_env"
		export GIT_AUTHOR_NAME
		export GIT_AUTHOR_EMAIL
		export GIT_AUTHOR_DATE
		git-cat-file commit "$use_commit" |
		sed -e '1,/^$/d'
	fi >.editmsg
	git-status-script >>.editmsg
fi
if [ "$?" != "0" -a ! -f $GIT_DIR/MERGE_HEAD ]
then
	cat .editmsg
	rm .editmsg
	exit 1
fi
case "$no_edit" in
'')
	${VISUAL:-${EDITOR:-vi}} .editmsg
	;;
esac
grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
if test -s .cmitmsg
then
	tree=$(git-write-tree) &&
	commit=$(cat .cmitmsg | git-commit-tree $tree $PARENTS) &&
	echo $commit > "$GIT_DIR/HEAD" &&
	rm -f -- "$GIT_DIR/MERGE_HEAD"
else
	echo >&2 "* no commit message?  aborting commit."
	false
fi
ret="$?"
rm -f .cmitmsg .editmsg
exit "$ret"
