| #!/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 |