[PATCH] refresh-index: fix bitmask assignment

Previous thread: [PATCH v2 1/4] builtin-add.c: restructure the code for maintainability by Junio C Hamano on Saturday, July 19, 2008 - 11:09 pm. (16 messages)

Next thread: [RFC variant 2 of 2] "needs update" considered harmful by Junio C Hamano on Sunday, July 20, 2008 - 12:48 am. (6 messages)
From: Junio C Hamano
Date: Saturday, July 19, 2008 - 11:31 pm

5fdeacb (Teach update-index about --ignore-submodules, 2008-05-14) added a
new refresh option flag but did not assign a unique bit for it correctly,
and broke "update-index --ignore-missing".

This should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * The fact that it took this long for anybody to notice the breakage
   probably means that the "--ignore-missing" option in particular but the
   ability for plumbing to allow scripting in general is not utilized by
   as many people as the design initially envisioned.

 cache.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/cache.h b/cache.h
index ca382d4..9735b66 100644
--- a/cache.h
+++ b/cache.h
@@ -396,7 +396,7 @@ extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
 #define REFRESH_UNMERGED	0x0002	/* allow unmerged */
 #define REFRESH_QUIET		0x0004	/* be quiet about it */
 #define REFRESH_IGNORE_MISSING	0x0008	/* ignore non-existent */
-#define REFRESH_IGNORE_SUBMODULES	0x0008	/* ignore submodules */
+#define REFRESH_IGNORE_SUBMODULES	0x0010	/* ignore submodules */
 extern int refresh_index(struct index_state *, unsigned int flags, const char **pathspec, char *seen);
 
 struct lock_file {
-- 
1.5.6.4.570.g052e6

--

From: Junio C Hamano
Date: Sunday, July 20, 2008 - 12:03 am

This hopefully protects the previous fix (and other --refresh related
options) from future  breakages.

I'll squash it in to the previous one.
---
 t/t2103-update-index-ignore-missing.sh |   89 ++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 deletions(-)
 create mode 100755 t/t2103-update-index-ignore-missing.sh

diff --git a/t/t2103-update-index-ignore-missing.sh b/t/t2103-update-index-ignore-missing.sh
new file mode 100755
index 0000000..332694e
--- /dev/null
+++ b/t/t2103-update-index-ignore-missing.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+test_description='update-index with options'
+
+. ./test-lib.sh
+
+test_expect_success basics '
+	>one &&
+	>two &&
+	>three &&
+
+	# need --add when adding
+	test_must_fail git update-index one &&
+	test -z "$(git ls-files)" &&
+	git update-index --add one &&
+	test zone = "z$(git ls-files)" &&
+
+	# update-index is atomic
+	echo 1 >one &&
+	test_must_fail git update-index one two &&
+	echo "M	one" >expect &&
+	git diff-files --name-status >actual &&
+	test_cmp expect actual &&
+
+	git update-index --add one two three &&
+	for i in one three two; do echo $i; done >expect &&
+	git ls-files >actual &&
+	test_cmp expect actual &&
+
+	test_tick &&
+	(
+		test_create_repo xyzzy &&
+		cd xyzzy &&
+		>file &&
+		git add file
+		git commit -m "sub initial"
+	) &&
+	git add xyzzy &&
+
+	test_tick &&
+	git commit -m initial &&
+	git tag initial
+'
+
+test_expect_success '--ignore-missing --refresh' '
+	git reset --hard initial &&
+	echo 2 >one &&
+	test_must_fail git update-index --refresh &&
+	echo 1 >one &&
+	git update-index --refresh &&
+	rm -f two &&
+	test_must_fail git update-index --refresh &&
+	git update-index --ignore-missing --refresh
+
+'
+
+test_expect_success '--unmerged --refresh' '
+	git reset --hard initial &&
+	info=$(git ls-files -s one | sed -e "s/ 0	/ 1	/") &&
+	git rm --cached one &&
+	echo "$info" | git update-index --index-info &&
+	test_must_fail git update-index ...
From: Junio C Hamano
Date: Sunday, July 20, 2008 - 12:28 am

Actually, I'll squash this further on top, for a reason that will become
clear with the next series...

---
 t/t2103-update-index-ignore-missing.sh |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/t/t2103-update-index-ignore-missing.sh b/t/t2103-update-index-ignore-missing.sh
index 332694e..4fbf855 100755
--- a/t/t2103-update-index-ignore-missing.sh
+++ b/t/t2103-update-index-ignore-missing.sh
@@ -62,10 +62,9 @@ test_expect_success '--unmerged --refresh' '
 	test_must_fail git update-index --refresh &&
 	git update-index --unmerged --refresh &&
 	echo 2 >two &&
+	echo "two: needs update" >expect &&
 	test_must_fail git update-index --unmerged --refresh >actual &&
-	grep two actual &&
-	! grep one actual &&
-	! grep three actual
+	test_cmp expect actual
 '
 
 test_expect_success '--ignore-submodules --refresh (1)' '
--

Previous thread: [PATCH v2 1/4] builtin-add.c: restructure the code for maintainability by Junio C Hamano on Saturday, July 19, 2008 - 11:09 pm. (16 messages)

Next thread: [RFC variant 2 of 2] "needs update" considered harmful by Junio C Hamano on Sunday, July 20, 2008 - 12:48 am. (6 messages)