Skip to content

Commit 980b9ca

Browse files
committed
Merge pull request #1354 from dscho/phase-out-show-ignored-directory-gracefully
Phase out `--show-ignored-directory` gracefully
2 parents 25181f6 + 5b01466 commit 980b9ca

File tree

2 files changed

+162
-0
lines changed

2 files changed

+162
-0
lines changed

builtin/commit.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,6 +1353,7 @@ int cmd_status(int argc, const char **argv, const char *prefix)
13531353
static int no_renames = -1;
13541354
static const char *rename_score_arg = (const char *)-1;
13551355
static int no_lock_index = 0;
1356+
static int show_ignored_directory = 0;
13561357
static struct wt_status s;
13571358
unsigned int progress_flag = 0;
13581359
int fd;
@@ -1391,6 +1392,10 @@ int cmd_status(int argc, const char **argv, const char *prefix)
13911392
{ OPTION_CALLBACK, 'M', "find-renames", &rename_score_arg,
13921393
N_("n"), N_("detect renames, optionally set similarity index"),
13931394
PARSE_OPT_OPTARG | PARSE_OPT_NONEG, opt_parse_rename_score },
1395+
OPT_BOOL(0, "show-ignored-directory", &show_ignored_directory,
1396+
N_("(DEPRECATED: use --ignore=matching instead) Only "
1397+
"show directories that match an ignore pattern "
1398+
"name.")),
13941399
OPT_BOOL(0, "no-lock-index", &no_lock_index,
13951400
N_("(DEPRECATED: use `git --no-optional-locks status` "
13961401
"instead) Do not lock the index")),
@@ -1413,6 +1418,12 @@ int cmd_status(int argc, const char **argv, const char *prefix)
14131418
setenv(GIT_OPTIONAL_LOCKS_ENVIRONMENT, "false", 1);
14141419
}
14151420

1421+
if (show_ignored_directory) {
1422+
warning("--show-ignored-directory was deprecated, use "
1423+
"--ignored=matching instead");
1424+
ignored_arg = "matching";
1425+
}
1426+
14161427
handle_untracked_files_arg(&s);
14171428
handle_ignored_arg(&s);
14181429

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#!/bin/sh
2+
#
3+
#
4+
5+
test_description='git status collapse ignored'
6+
7+
. ./test-lib.sh
8+
9+
10+
cat >.gitignore <<\EOF
11+
*.ign
12+
ignored_dir/
13+
!*.unignore
14+
EOF
15+
16+
# commit initial ignore file
17+
test_expect_success 'setup initial commit and ignore file' '
18+
git add . &&
19+
test_tick &&
20+
git commit -m "Initial commit"
21+
'
22+
23+
cat >expect <<\EOF
24+
? err
25+
? expect
26+
? output
27+
! dir/ignored/ignored_1.ign
28+
! dir/ignored/ignored_2.ign
29+
! ignored/ignored_1.ign
30+
! ignored/ignored_2.ign
31+
EOF
32+
33+
# Test status behavior on folder with ignored files
34+
test_expect_success 'setup folder with ignored files' '
35+
mkdir -p ignored dir/ignored &&
36+
touch ignored/ignored_1.ign ignored/ignored_2.ign \
37+
dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign
38+
'
39+
40+
test_expect_success 'Verify behavior of status on folders with ignored files' '
41+
test_when_finished "git clean -fdx" &&
42+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output 2>err &&
43+
test_i18ncmp expect output &&
44+
grep "deprecated.*use --ignored=matching instead" err
45+
'
46+
47+
# Test status bahavior on folder with tracked and ignored files
48+
cat >expect <<\EOF
49+
? expect
50+
? output
51+
! dir/tracked_ignored/ignored_1.ign
52+
! dir/tracked_ignored/ignored_2.ign
53+
! tracked_ignored/ignored_1.ign
54+
! tracked_ignored/ignored_2.ign
55+
EOF
56+
57+
test_expect_success 'setup folder with tracked & ignored files' '
58+
mkdir -p tracked_ignored dir/tracked_ignored &&
59+
touch tracked_ignored/tracked_1 tracked_ignored/tracked_2 \
60+
tracked_ignored/ignored_1.ign tracked_ignored/ignored_2.ign \
61+
dir/tracked_ignored/tracked_1 dir/tracked_ignored/tracked_2 \
62+
dir/tracked_ignored/ignored_1.ign dir/tracked_ignored/ignored_2.ign &&
63+
64+
git add tracked_ignored/tracked_1 tracked_ignored/tracked_2 \
65+
dir/tracked_ignored/tracked_1 dir/tracked_ignored/tracked_2 &&
66+
test_tick &&
67+
git commit -m "commit tracked files"
68+
'
69+
70+
test_expect_success 'Verify status on folder with tracked & ignored files' '
71+
test_when_finished "git clean -fdx && git reset HEAD~1 --hard" &&
72+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
73+
test_i18ncmp expect output
74+
'
75+
76+
77+
# Test status behavior on folder with untracked and ignored files
78+
cat >expect <<\EOF
79+
? dir/untracked_ignored/untracked_1
80+
? dir/untracked_ignored/untracked_2
81+
? expect
82+
? output
83+
? untracked_ignored/untracked_1
84+
? untracked_ignored/untracked_2
85+
! dir/untracked_ignored/ignored_1.ign
86+
! dir/untracked_ignored/ignored_2.ign
87+
! untracked_ignored/ignored_1.ign
88+
! untracked_ignored/ignored_2.ign
89+
EOF
90+
91+
test_expect_success 'setup folder with tracked & ignored files' '
92+
mkdir -p untracked_ignored dir/untracked_ignored &&
93+
touch untracked_ignored/untracked_1 untracked_ignored/untracked_2 \
94+
untracked_ignored/ignored_1.ign untracked_ignored/ignored_2.ign \
95+
dir/untracked_ignored/untracked_1 dir/untracked_ignored/untracked_2 \
96+
dir/untracked_ignored/ignored_1.ign dir/untracked_ignored/ignored_2.ign
97+
'
98+
99+
test_expect_success 'Verify status on folder with tracked & ignored files' '
100+
test_when_finished "git clean -fdx" &&
101+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
102+
test_i18ncmp expect output
103+
'
104+
105+
# Test status behavior on ignored folder
106+
cat >expect <<\EOF
107+
? expect
108+
? output
109+
! ignored_dir/
110+
EOF
111+
112+
test_expect_success 'setup folder with tracked & ignored files' '
113+
mkdir ignored_dir &&
114+
touch ignored_dir/ignored_1 ignored_dir/ignored_2 \
115+
ignored_dir/ignored_1.ign ignored_dir/ignored_2.ign
116+
'
117+
118+
test_expect_success 'Verify status on folder with tracked & ignored files' '
119+
test_when_finished "git clean -fdx" &&
120+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
121+
test_i18ncmp expect output
122+
'
123+
124+
# Test status behavior on ignored folder with tracked file
125+
cat >expect <<\EOF
126+
? expect
127+
? output
128+
! ignored_dir/ignored_1
129+
! ignored_dir/ignored_1.ign
130+
! ignored_dir/ignored_2
131+
! ignored_dir/ignored_2.ign
132+
EOF
133+
134+
test_expect_success 'setup folder with tracked & ignored files' '
135+
mkdir ignored_dir &&
136+
touch ignored_dir/ignored_1 ignored_dir/ignored_2 \
137+
ignored_dir/ignored_1.ign ignored_dir/ignored_2.ign \
138+
ignored_dir/tracked &&
139+
git add -f ignored_dir/tracked &&
140+
test_tick &&
141+
git commit -m "Force add file in ignored directory"
142+
'
143+
144+
test_expect_success 'Verify status on folder with tracked & ignored files' '
145+
test_when_finished "git clean -fdx && git reset HEAD~1 --hard" &&
146+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
147+
test_i18ncmp expect output
148+
'
149+
150+
test_done
151+

0 commit comments

Comments
 (0)