Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Mon, 21 Jul 2008 00:16:29 +0000 (17:16 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Jul 2008 00:16:29 +0000 (17:16 -0700)
* maint:
fix usage string for git grep
refresh-index: fix bitmask assignment

Conflicts:
builtin-grep.c

builtin-grep.c
cache.h
t/t2103-update-index-ignore-missing.sh [new file with mode: 0755]
index 7bf6a7156cdd8e236d451b9be4d4754c2c517e66..631129ddfd0ffe06f919882d22cfc494d9553f50 100644 (file)
@@ -498,7 +498,7 @@ static int grep_object(struct grep_opt *opt, const char **paths,
 }
 
 static const char builtin_grep_usage[] =
-"git grep <option>* <rev>* [-e] <pattern> [<path>...]";
+"git grep <option>* [-e] <pattern> <rev>* [[--] <path>...]";
 
 static const char emsg_invalid_context_len[] =
 "%s: invalid context length argument";
diff --git a/cache.h b/cache.h
index a779d9207c8ea4d4e8455a89b17f312e0e71332d..305e2f701bd4fe3cbfb5a7cb37e75b73b67ee222 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -397,7 +397,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 {
diff --git a/t/t2103-update-index-ignore-missing.sh b/t/t2103-update-index-ignore-missing.sh
new file mode 100755 (executable)
index 0000000..332694e
--- /dev/null
@@ -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 --refresh &&
+       git update-index --unmerged --refresh &&
+       echo 2 >two &&
+       test_must_fail git update-index --unmerged --refresh >actual &&
+       grep two actual &&
+       ! grep one actual &&
+       ! grep three actual
+'
+
+test_expect_success '--ignore-submodules --refresh (1)' '
+       git reset --hard initial &&
+       rm -f two &&
+       test_must_fail git update-index --ignore-submodules --refresh
+'
+
+test_expect_success '--ignore-submodules --refresh (2)' '
+       git reset --hard initial &&
+       test_tick &&
+       (
+               cd xyzzy &&
+               git commit -m "sub second" --allow-empty
+       ) &&
+       test_must_fail git update-index --refresh &&
+       test_must_fail git update-index --ignore-missing --refresh &&
+       git update-index --ignore-submodules --refresh
+'
+
+test_done