Code

Fastpath the normal case by not checking that index matches HEAD.
authorJunio C Hamano <junkio@cox.net>
Wed, 28 Sep 2005 23:29:11 +0000 (16:29 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 28 Sep 2005 23:29:11 +0000 (16:29 -0700)
The merge strategy would check this itself and typically does it
by using git-read-tree -m -u 3-way merge.

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

index 7607e819c355fd30923c520b35ab4de7b918f013..5890c7b1c038b280e15d95c74700013152ea8959 100755 (executable)
@@ -24,7 +24,9 @@ dropsave() {
 }
 
 savestate() {
-       git diff -r -z --name-only $head | cpio -0 -o >"$GIR_DIR/MERGE_SAVE"
+       # Stash away any local modifications.
+       git-diff-index -r -z --name-only $head |
+       cpio -0 -o >"$GIR_DIR/MERGE_SAVE"
 }
 
 restorestate() {
@@ -149,12 +151,7 @@ esac
 # we use, it would operate on the index, possibly affecting the
 # working tree, and when resolved cleanly, have the desired tree
 # in the index -- this means that the index must be in sync with
-# the $head commit.
-files=$(git-diff-index --cached --name-only $head) || exit
-if [ "$files" ]; then
-   echo >&2 "Dirty index: cannot merge (dirty: $files)"
-   exit 1
-fi
+# the $head commit.  The strategies are responsible to ensure this.
 
 case "$use_strategies" in
 ?*' '?*)