@@ -1380,15 +1380,40 @@ EOF
13801380 test_i18ncmp expect output
13811381'
13821382
1383- test_expect_success ' .gitmodules ignore=all suppresses submodule summary' '
1383+ test_expect_success ' .gitmodules ignore=all suppresses unstaged submodule summary' '
1384+ cat > expect << EOF &&
1385+ On branch master
1386+ Changes to be committed:
1387+ (use "git reset HEAD <file>..." to unstage)
1388+
1389+ modified: sm
1390+
1391+ Changes not staged for commit:
1392+ (use "git add <file>..." to update what will be committed)
1393+ (use "git checkout -- <file>..." to discard changes in working directory)
1394+
1395+ modified: dir1/modified
1396+
1397+ Untracked files:
1398+ (use "git add <file>..." to include in what will be committed)
1399+
1400+ .gitmodules
1401+ dir1/untracked
1402+ dir2/modified
1403+ dir2/untracked
1404+ expect
1405+ output
1406+ untracked
1407+
1408+ EOF
13841409 git config --add -f .gitmodules submodule.subname.ignore all &&
13851410 git config --add -f .gitmodules submodule.subname.path sm &&
13861411 git status > output &&
13871412 test_cmp expect output &&
13881413 git config -f .gitmodules --remove-section submodule.subname
13891414'
13901415
1391- test_expect_success ' .git/config ignore=all suppresses submodule summary' '
1416+ test_expect_success ' .git/config ignore=all suppresses unstaged submodule summary' '
13921417 git config --add -f .gitmodules submodule.subname.ignore none &&
13931418 git config --add -f .gitmodules submodule.subname.path sm &&
13941419 git config --add submodule.subname.ignore all &&
@@ -1461,4 +1486,49 @@ test_expect_success 'Restore default test environment' '
14611486 git config --unset status.showUntrackedFiles
14621487'
14631488
1489+ test_expect_success ' git commit will commit a staged but ignored submodule' '
1490+ git config --add -f .gitmodules submodule.subname.ignore all &&
1491+ git config --add -f .gitmodules submodule.subname.path sm &&
1492+ git config --add submodule.subname.ignore all &&
1493+ git status -s --ignore-submodules=dirty >output &&
1494+ test_i18ngrep "^M. sm" output &&
1495+ GIT_EDITOR="echo hello >>\"\$1\"" &&
1496+ export GIT_EDITOR &&
1497+ git commit -uno &&
1498+ git status -s --ignore-submodules=dirty >output &&
1499+ test_i18ngrep ! "^M. sm" output
1500+ '
1501+
1502+ test_expect_success ' git commit --dry-run will show a staged but ignored submodule' '
1503+ git reset HEAD^ &&
1504+ git add sm &&
1505+ cat >expect << EOF &&
1506+ On branch master
1507+ Changes to be committed:
1508+ (use "git reset HEAD <file>..." to unstage)
1509+
1510+ modified: sm
1511+
1512+ Changes not staged for commit:
1513+ (use "git add <file>..." to update what will be committed)
1514+ (use "git checkout -- <file>..." to discard changes in working directory)
1515+
1516+ modified: dir1/modified
1517+
1518+ Untracked files not listed (use -u option to show untracked files)
1519+ EOF
1520+ git commit -uno --dry-run >output &&
1521+ test_i18ncmp expect output &&
1522+ git status -s --ignore-submodules=dirty >output &&
1523+ test_i18ngrep "^M. sm" output
1524+ '
1525+
1526+ test_expect_success ' git commit -m will commit a staged but ignored submodule' '
1527+ git commit -uno -m message &&
1528+ git status -s --ignore-submodules=dirty >output &&
1529+ test_i18ngrep ! "^M. sm" output &&
1530+ git config --remove-section submodule.subname &&
1531+ git config -f .gitmodules --remove-section submodule.subname
1532+ '
1533+
14641534test_done
0 commit comments