summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2cd5dfd)
raw | patch | inline | side by side (parent: 2cd5dfd)
author | Junio C Hamano <gitster@pobox.com> | |
Thu, 21 Feb 2008 19:33:56 +0000 (11:33 -0800) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 21 Feb 2008 19:45:22 +0000 (11:45 -0800) |
When invalidating unmerged entries in the index, we used to set
their ce_mode to 0 to note the fact that they do not matter
anymore which also made sure that later unpack_trees() call
would not reuse them. Instead just remove them from the index.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
their ce_mode to 0 to note the fact that they do not matter
anymore which also made sure that later unpack_trees() call
would not reuse them. Instead just remove them from the index.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-read-tree.c | patch | blob | history | |
t/t7104-reset.sh | [new file with mode: 0755] | patch | blob |
diff --git a/builtin-read-tree.c b/builtin-read-tree.c
index 57854017535a36fc1fcd7bb997f198956391199d..726fb0b588dcb550b5554b111a416c7ac3b25521 100644 (file)
--- a/builtin-read-tree.c
+++ b/builtin-read-tree.c
continue;
cache_tree_invalidate_path(active_cache_tree, ce->name);
last = ce;
- ce->ce_flags |= CE_REMOVE;
+ continue;
}
*dst++ = ce;
}
diff --git a/t/t7104-reset.sh b/t/t7104-reset.sh
--- /dev/null
+++ b/t/t7104-reset.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+test_description='reset --hard unmerged'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ mkdir before later &&
+ >before/1 &&
+ >before/2 &&
+ >hello &&
+ >later/3 &&
+ git add before hello later &&
+ git commit -m world &&
+
+ H=$(git rev-parse :hello) &&
+ git rm --cached hello &&
+ echo "100644 $H 2 hello" | git update-index --index-info &&
+
+ rm -f hello &&
+ mkdir -p hello &&
+ >hello/world &&
+ test "$(git ls-files -o)" = hello/world
+
+'
+
+test_expect_success 'reset --hard should restore unmerged ones' '
+
+ git reset --hard &&
+ git ls-files --error-unmatch before/1 before/2 hello later/3 &&
+ test -f hello
+
+'
+
+test_expect_success 'reset --hard did not corrupt index nor cached-tree' '
+
+ T=$(git write-tree) &&
+ rm -f .git/index &&
+ git add before hello later &&
+ U=$(git write-tree) &&
+ test "$T" = "$U"
+
+'
+
+test_done