9297f77e6d
Since 1.7.0 there are three reasons a submodule is considered modified against the work tree: It contains new commits, modified content or untracked content. Lets show all reasons in the long format of git status, so the user can better asses the nature of the modification. This change does not affect the short and porcelain formats. Two new members are added to "struct wt_status_change_data" to store the information gathered by run_diff_files(). wt-status.c uses the new flag DIFF_OPT_DIRTY_SUBMODULES to tell diff-lib.c it wants to get detailed dirty information about submodules. A hint line for submodules is printed in the dirty header when dirty submodules are present. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
92 lines
2.1 KiB
Bash
Executable File
92 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git status for submodule'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
test_create_repo sub &&
|
|
(
|
|
cd sub &&
|
|
: >bar &&
|
|
git add bar &&
|
|
git commit -m " Add bar" &&
|
|
: >foo &&
|
|
git add foo &&
|
|
git commit -m " Add foo"
|
|
) &&
|
|
echo output > .gitignore &&
|
|
git add sub .gitignore &&
|
|
git commit -m "Add submodule sub"
|
|
'
|
|
|
|
test_expect_success 'status clean' '
|
|
git status >output &&
|
|
grep "nothing to commit" output
|
|
'
|
|
|
|
test_expect_success 'commit --dry-run -a clean' '
|
|
test_must_fail git commit --dry-run -a >output &&
|
|
grep "nothing to commit" output
|
|
'
|
|
|
|
test_expect_success 'status with modified file in submodule' '
|
|
(cd sub && git reset --hard) &&
|
|
echo "changed" >sub/foo &&
|
|
git status >output &&
|
|
grep "modified: sub (new commits, modified content)" output
|
|
'
|
|
|
|
test_expect_success 'status with modified file in submodule (porcelain)' '
|
|
(cd sub && git reset --hard) &&
|
|
echo "changed" >sub/foo &&
|
|
git status --porcelain >output &&
|
|
diff output - <<-\EOF
|
|
M sub
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'status with added file in submodule' '
|
|
(cd sub && git reset --hard && echo >foo && git add foo) &&
|
|
git status >output &&
|
|
grep "modified: sub (new commits, modified content)" output
|
|
'
|
|
|
|
test_expect_success 'status with added file in submodule (porcelain)' '
|
|
(cd sub && git reset --hard && echo >foo && git add foo) &&
|
|
git status --porcelain >output &&
|
|
diff output - <<-\EOF
|
|
M sub
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'status with untracked file in submodule' '
|
|
(cd sub && git reset --hard) &&
|
|
echo "content" >sub/new-file &&
|
|
git status >output &&
|
|
grep "modified: sub (new commits, untracked content)" output
|
|
'
|
|
|
|
test_expect_success 'status with untracked file in submodule (porcelain)' '
|
|
git status --porcelain >output &&
|
|
diff output - <<-\EOF
|
|
M sub
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'rm submodule contents' '
|
|
rm -rf sub/* sub/.git
|
|
'
|
|
|
|
test_expect_success 'status clean (empty submodule dir)' '
|
|
git status >output &&
|
|
grep "nothing to commit" output
|
|
'
|
|
|
|
test_expect_success 'status -a clean (empty submodule dir)' '
|
|
test_must_fail git commit --dry-run -a >output &&
|
|
grep "nothing to commit" output
|
|
'
|
|
|
|
test_done
|