Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

refresh-index: fix bitmask assignment

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 fixes it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information...
commit 3f1b7b607a81cf56254fcc4ed417cc4344cde2a5 1 parent a1b6fb0
Junio C Hamano authored July 19, 2008
2  cache.h
@@ -396,7 +396,7 @@ extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
396 396
 #define REFRESH_UNMERGED	0x0002	/* allow unmerged */
397 397
 #define REFRESH_QUIET		0x0004	/* be quiet about it */
398 398
 #define REFRESH_IGNORE_MISSING	0x0008	/* ignore non-existent */
399  
-#define REFRESH_IGNORE_SUBMODULES	0x0008	/* ignore submodules */
  399
+#define REFRESH_IGNORE_SUBMODULES	0x0010	/* ignore submodules */
400 400
 extern int refresh_index(struct index_state *, unsigned int flags, const char **pathspec, char *seen);
401 401
 
402 402
 struct lock_file {
89  t/t2103-update-index-ignore-missing.sh
... ...
@@ -0,0 +1,89 @@
  1
+#!/bin/sh
  2
+
  3
+test_description='update-index with options'
  4
+
  5
+. ./test-lib.sh
  6
+
  7
+test_expect_success basics '
  8
+	>one &&
  9
+	>two &&
  10
+	>three &&
  11
+
  12
+	# need --add when adding
  13
+	test_must_fail git update-index one &&
  14
+	test -z "$(git ls-files)" &&
  15
+	git update-index --add one &&
  16
+	test zone = "z$(git ls-files)" &&
  17
+
  18
+	# update-index is atomic
  19
+	echo 1 >one &&
  20
+	test_must_fail git update-index one two &&
  21
+	echo "M	one" >expect &&
  22
+	git diff-files --name-status >actual &&
  23
+	test_cmp expect actual &&
  24
+
  25
+	git update-index --add one two three &&
  26
+	for i in one three two; do echo $i; done >expect &&
  27
+	git ls-files >actual &&
  28
+	test_cmp expect actual &&
  29
+
  30
+	test_tick &&
  31
+	(
  32
+		test_create_repo xyzzy &&
  33
+		cd xyzzy &&
  34
+		>file &&
  35
+		git add file
  36
+		git commit -m "sub initial"
  37
+	) &&
  38
+	git add xyzzy &&
  39
+
  40
+	test_tick &&
  41
+	git commit -m initial &&
  42
+	git tag initial
  43
+'
  44
+
  45
+test_expect_success '--ignore-missing --refresh' '
  46
+	git reset --hard initial &&
  47
+	echo 2 >one &&
  48
+	test_must_fail git update-index --refresh &&
  49
+	echo 1 >one &&
  50
+	git update-index --refresh &&
  51
+	rm -f two &&
  52
+	test_must_fail git update-index --refresh &&
  53
+	git update-index --ignore-missing --refresh
  54
+
  55
+'
  56
+
  57
+test_expect_success '--unmerged --refresh' '
  58
+	git reset --hard initial &&
  59
+	info=$(git ls-files -s one | sed -e "s/ 0	/ 1	/") &&
  60
+	git rm --cached one &&
  61
+	echo "$info" | git update-index --index-info &&
  62
+	test_must_fail git update-index --refresh &&
  63
+	git update-index --unmerged --refresh &&
  64
+	echo 2 >two &&
  65
+	test_must_fail git update-index --unmerged --refresh >actual &&
  66
+	grep two actual &&
  67
+	! grep one actual &&
  68
+	! grep three actual
  69
+'
  70
+
  71
+test_expect_success '--ignore-submodules --refresh (1)' '
  72
+	git reset --hard initial &&
  73
+	rm -f two &&
  74
+	test_must_fail git update-index --ignore-submodules --refresh
  75
+'
  76
+
  77
+test_expect_success '--ignore-submodules --refresh (2)' '
  78
+	git reset --hard initial &&
  79
+	test_tick &&
  80
+	(
  81
+		cd xyzzy &&
  82
+		git commit -m "sub second" --allow-empty
  83
+	) &&
  84
+	test_must_fail git update-index --refresh &&
  85
+	test_must_fail git update-index --ignore-missing --refresh &&
  86
+	git update-index --ignore-submodules --refresh
  87
+'
  88
+
  89
+test_done

0 notes on commit 3f1b7b6

Please sign in to comment.
Something went wrong with that request. Please try again.