git-commit --amend: two fixes.
authorJunio C Hamano <junkio@cox.net>
Thu, 20 Apr 2006 08:20:56 +0000 (01:20 -0700)
committerJunio C Hamano <junkio@cox.net>
Thu, 20 Apr 2006 09:51:12 +0000 (02:51 -0700)
When running "git commit --amend" only to fix the commit log
message without any content change, we mistakenly showed the
git-status output that says "nothing to commit" without
commenting it out.

If you have already run update-index but you want to amend the
top commit, "git commit --amend --only" without any paths should
have worked, because --only means "starting from the base
commit, update-index these paths only to prepare the index to
commit, and perform the commit".  However, we refused -o without
paths.

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-commit.sh
t/t1200-tutorial.sh

index 01c73bd..26cd7ca 100755 (executable)
@@ -167,8 +167,13 @@ run_status () {
        fi
        case "$committable" in
        0)
-           echo "nothing to commit"
-           exit 1
+               case "$amend" in
+               t)
+                       echo "# No changes" ;;
+               *)
+                       echo "nothing to commit" ;;
+               esac
+               exit 1 ;;
        esac
        exit 0
     )
@@ -365,14 +370,16 @@ tt*)
   die "Only one of -c/-C/-F/-m can be used." ;;
 esac
 
-case "$#,$also$only" in
-*,tt)
+case "$#,$also,$only,$amend" in
+*,t,t,*)
   die "Only one of --include/--only can be used." ;;
-0,t)
+0,t,,* | 0,,t,)
   die "No paths with --include/--only does not make sense." ;;
-0,)
+0,,t,t)
+  only_include_assumed="# Clever... amending the last one with dirty index." ;;
+0,,,*)
   ;;
-*,)
+*,,,*)
   only_include_assumed="# Explicit paths specified without -i nor -o; assuming --only paths..."
   also=
   ;;
index 1002413..f4d53c0 100755 (executable)
@@ -114,6 +114,8 @@ EOF
 
 git commit -m 'Merged "mybranch" changes.' -i hello
 
+test_done
+
 cat > show-branch.expect << EOF
 * [master] Merged "mybranch" changes.
  ! [mybranch] Some work.