git-commit: allow --only to lose what was staged earlier.
authorJunio C Hamano <junkio@cox.net>
Sun, 10 Dec 2006 06:32:43 +0000 (22:32 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 10 Dec 2006 22:50:40 +0000 (14:50 -0800)
The command used to have a safety valve to prevent this sequence:

edit foo
git update-index foo
edit foo
git diff foo
git commit --only foo

The reason for this was because an inexperienced user might
mistakenly think what is shown with the last-minute diff
contains all the change that is being committed (instead, what
the user asked to check was an incremental diff since what has
been staged so far).  However, this turns out to only annoy
people who know what they are doing.  Inexperienced people
would not be using the first "update-index" anyway, in which
case they would see the full changes in the "git diff".

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

index 81c3a0cb6152b02ccdcaed607efcd500813ce607..c829791171b2984318aadb63b5b71289b858a7d3 100755 (executable)
@@ -350,19 +350,9 @@ t,)
                        refuse_partial "Cannot do a partial commit during a merge."
                fi
                TMP_INDEX="$GIT_DIR/tmp-index$$"
-               if test -z "$initial_commit"
-               then
-                       # make sure index is clean at the specified paths, or
-                       # they are additions.
-                       dirty_in_index=`git-diff-index --cached --name-status \
-                               --diff-filter=DMTU HEAD -- "$@"`
-                       test -z "$dirty_in_index" ||
-                       refuse_partial "Different in index and the last commit:
-$dirty_in_index"
-               fi
                commit_only=`git-ls-files --error-unmatch -- "$@"` || exit
 
-               # Build the temporary index and update the real index
+               # Build a temporary index and update the real index
                # the same way.
                if test -z "$initial_commit"
                then