22
33test_description=' git add respects submodule ignore=all and explicit pathspec' 
44
5+ #  This test covers the behavior of "git add", "git status" and "git log" when
6+ #  dealing with submodules that have the ignore=all setting in
7+ #  .gitmodules. It ensures that changes in such submodules are
8+ #  ignored by default, but can be staged with "git add --force".
9+ 
510.  ./test-lib.sh
611
712GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
@@ -20,26 +25,38 @@ test_expect_success 'setup: create origin repos'  '
2025		git tag v1.0 && 
2126		test_commit sub_file2 && 
2227		git tag v2.0 && 
28+ 		test_commit sub_file3 && 
29+ 		git tag v3.0 && 
2330	cd "${base_path}" && 
2431	git init main && 
2532		cd main && 
2633		test_commit first && 
2734	cd "${base_path}" 
2835' 
2936# 2
30- test_expect_success ' main: add submodule and config ignore=all ' ' 
37+ test_expect_success ' main: add submodule with default config ' ' 
3138	cd "${base_path}" && 
3239	cd main &&  
3340	git submodule add ../sub && 
3441	git commit -m "add submodule" && 
42+ 	git log --oneline --name-only | grep "^sub$" && 
43+ 	git -C sub reset --hard v2.0 && 
44+ 	git status --porcelain | grep "^ M sub$" && 
45+ 	echo 
46+ ' 
47+ 
48+ # 3
49+ test_expect_success ' main: submodule config ignore=all' ' 
50+ 	cd "${base_path}" && 
51+ 	cd main &&  
3552	git config -f .gitmodules submodule.sub.ignore all && 
3653	git add . && 
3754	git commit -m "update submodule config sub.ignore all" && 
3855	! git status --porcelain | grep "^.*$" && 
56+ 	! git log --oneline --name-only | grep "^sub$" && 
3957	echo 
4058' 
41- 
42- # 3
59+ # 4
4360test_expect_success ' sub: change to different sha1 and check status in main' ' 
4461	cd "${base_path}" && 
4562	cd main && 
@@ -49,7 +66,7 @@ test_expect_success 'sub: change to different sha1 and check status in main'  '
4966	echo 
5067' 
5168
52- # 4 
69+ # 5 
5370test_expect_success ' main: check normal add and status' ' 
5471	cd "${base_path}" && 
5572	cd main && 
@@ -58,7 +75,7 @@ test_expect_success 'main: check normal add and status'  '
5875	echo 
5976' 
6077
61- # 5 
78+ # 6 
6279test_expect_success ' main: check force add and status' ' 
6380	cd "${base_path}" && 
6481	cd main && 
@@ -71,3 +88,4 @@ test_expect_success 'main: check force add and status'  '
7188' 
7289test_done
7390exit  0
91+ 
0 commit comments