Merge branch 'pb/commit-verbose-config'

"git commit" learned to pay attention to "commit.verbose"
configuration variable and act as if "--verbose" option was
given from the command line.

* pb/commit-verbose-config:
  commit: add a commit.verbose config variable
  t7507-commit-verbose: improve test coverage by testing number of diffs
  parse-options.c: make OPTION_COUNTUP respect "unspecified" values
  t/t7507: improve test coverage
  t0040-parse-options: improve test coverage
  test-parse-options: print quiet as integer
  t0040-test-parse-options.sh: fix style issues
This commit is contained in:
Junio C Hamano 2016-05-23 14:54:31 -07:00
commit 5d5f1c236b
8 changed files with 268 additions and 74 deletions

View file

@ -1141,6 +1141,10 @@ commit.template::
Specify the pathname of a file to use as the template for Specify the pathname of a file to use as the template for
new commit messages. new commit messages.
commit.verbose::
A boolean or int to specify the level of verbose with `git commit`.
See linkgit:git-commit[1].
credential.helper:: credential.helper::
Specify an external helper to be called when a username or Specify an external helper to be called when a username or
password credential is needed; the helper may consult external password credential is needed; the helper may consult external

View file

@ -290,7 +290,8 @@ configuration variable documented in linkgit:git-config[1].
what changes the commit has. what changes the commit has.
Note that this diff output doesn't have its Note that this diff output doesn't have its
lines prefixed with '#'. This diff will not be a part lines prefixed with '#'. This diff will not be a part
of the commit message. of the commit message. See the `commit.verbose` configuration
variable in linkgit:git-config[1].
+ +
If specified twice, show in addition the unified diff between If specified twice, show in addition the unified diff between
what would be committed and the worktree files, i.e. the unstaged what would be committed and the worktree files, i.e. the unstaged

View file

@ -144,8 +144,12 @@ There are some macros to easily define options:
`OPT_COUNTUP(short, long, &int_var, description)`:: `OPT_COUNTUP(short, long, &int_var, description)`::
Introduce a count-up option. Introduce a count-up option.
`int_var` is incremented on each use of `--option`, and Each use of `--option` increments `int_var`, starting from zero
reset to zero with `--no-option`. (even if initially negative), and `--no-option` resets it to
zero. To determine if `--option` or `--no-option` was encountered at
all, initialize `int_var` to a negative value, and if it is still
negative after parse_options(), then neither `--option` nor
`--no-option` was seen.
`OPT_BIT(short, long, &int_var, description, mask)`:: `OPT_BIT(short, long, &int_var, description, mask)`::
Introduce a boolean option. Introduce a boolean option.

View file

@ -114,6 +114,7 @@ static char *fixup_message, *squash_message;
static int all, also, interactive, patch_interactive, only, amend, signoff; static int all, also, interactive, patch_interactive, only, amend, signoff;
static int edit_flag = -1; /* unspecified */ static int edit_flag = -1; /* unspecified */
static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship; static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship;
static int config_commit_verbose = -1; /* unspecified */
static int no_post_rewrite, allow_empty_message; static int no_post_rewrite, allow_empty_message;
static char *untracked_files_arg, *force_date, *ignore_submodule_arg; static char *untracked_files_arg, *force_date, *ignore_submodule_arg;
static char *sign_commit; static char *sign_commit;
@ -1515,6 +1516,11 @@ static int git_commit_config(const char *k, const char *v, void *cb)
sign_commit = git_config_bool(k, v) ? "" : NULL; sign_commit = git_config_bool(k, v) ? "" : NULL;
return 0; return 0;
} }
if (!strcmp(k, "commit.verbose")) {
int is_bool;
config_commit_verbose = git_config_bool_or_int(k, v, &is_bool);
return 0;
}
status = git_gpg_config(k, v, NULL); status = git_gpg_config(k, v, NULL);
if (status) if (status)
@ -1661,9 +1667,13 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
if (parse_commit(current_head)) if (parse_commit(current_head))
die(_("could not parse HEAD commit")); die(_("could not parse HEAD commit"));
} }
verbose = -1; /* unspecified */
argc = parse_and_validate_options(argc, argv, builtin_commit_options, argc = parse_and_validate_options(argc, argv, builtin_commit_options,
builtin_commit_usage, builtin_commit_usage,
prefix, current_head, &s); prefix, current_head, &s);
if (verbose == -1)
verbose = (config_commit_verbose < 0) ? 0 : config_commit_verbose;
if (dry_run) if (dry_run)
return dry_run_commit(argc, argv, prefix, current_head, &s); return dry_run_commit(argc, argv, prefix, current_head, &s);
index_file = prepare_index(argc, argv, prefix, current_head, 0); index_file = prepare_index(argc, argv, prefix, current_head, 0);

View file

@ -110,6 +110,8 @@ static int get_value(struct parse_opt_ctx_t *p,
return 0; return 0;
case OPTION_COUNTUP: case OPTION_COUNTUP:
if (*(int *)opt->value < 0)
*(int *)opt->value = 0;
*(int *)opt->value = unset ? 0 : *(int *)opt->value + 1; *(int *)opt->value = unset ? 0 : *(int *)opt->value + 1;
return 0; return 0;

View file

@ -7,7 +7,8 @@ static int integer = 0;
static unsigned long magnitude = 0; static unsigned long magnitude = 0;
static unsigned long timestamp; static unsigned long timestamp;
static int abbrev = 7; static int abbrev = 7;
static int verbose = 0, dry_run = 0, quiet = 0; static int verbose = -1; /* unspecified */
static int dry_run = 0, quiet = 0;
static char *string = NULL; static char *string = NULL;
static char *file = NULL; static char *file = NULL;
static int ambiguous; static int ambiguous;
@ -90,7 +91,7 @@ int main(int argc, char **argv)
printf("string: %s\n", string ? string : "(not set)"); printf("string: %s\n", string ? string : "(not set)");
printf("abbrev: %d\n", abbrev); printf("abbrev: %d\n", abbrev);
printf("verbose: %d\n", verbose); printf("verbose: %d\n", verbose);
printf("quiet: %s\n", quiet ? "yes" : "no"); printf("quiet: %d\n", quiet);
printf("dry run: %s\n", dry_run ? "yes" : "no"); printf("dry run: %s\n", dry_run ? "yes" : "no");
printf("file: %s\n", file ? file : "(not set)"); printf("file: %s\n", file ? file : "(not set)");

View file

@ -7,7 +7,7 @@ test_description='our own option parser'
. ./test-lib.sh . ./test-lib.sh
cat > expect << EOF cat >expect <<\EOF
usage: test-parse-options <options> usage: test-parse-options <options>
--yes get a boolean --yes get a boolean
@ -49,22 +49,22 @@ Standard options
EOF EOF
test_expect_success 'test help' ' test_expect_success 'test help' '
test_must_fail test-parse-options -h > output 2> output.err && test_must_fail test-parse-options -h >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_i18ncmp expect output test_i18ncmp expect output
' '
mv expect expect.err mv expect expect.err
cat >expect.template <<EOF cat >expect.template <<\EOF
boolean: 0 boolean: 0
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
@ -156,7 +156,7 @@ test_expect_success 'OPT_MAGNITUDE() 3giga' '
check magnitude: 3221225472 -m 3g check magnitude: 3221225472 -m 3g
' '
cat > expect << EOF cat >expect <<\EOF
boolean: 2 boolean: 2
integer: 1729 integer: 1729
magnitude: 16384 magnitude: 16384
@ -164,7 +164,7 @@ timestamp: 0
string: 123 string: 123
abbrev: 7 abbrev: 7
verbose: 2 verbose: 2
quiet: no quiet: 0
dry run: yes dry run: yes
file: prefix/my.file file: prefix/my.file
EOF EOF
@ -176,7 +176,7 @@ test_expect_success 'short options' '
test_must_be_empty output.err test_must_be_empty output.err
' '
cat > expect << EOF cat >expect <<\EOF
boolean: 2 boolean: 2
integer: 1729 integer: 1729
magnitude: 16384 magnitude: 16384
@ -184,7 +184,7 @@ timestamp: 0
string: 321 string: 321
abbrev: 10 abbrev: 10
verbose: 2 verbose: 2
quiet: no quiet: 0
dry run: no dry run: no
file: prefix/fi.le file: prefix/fi.le
EOF EOF
@ -204,15 +204,15 @@ test_expect_success 'missing required value' '
test_expect_code 129 test-parse-options --file test_expect_code 129 test-parse-options --file
' '
cat > expect << EOF cat >expect <<\EOF
boolean: 1 boolean: 1
integer: 13 integer: 13
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: 123 string: 123
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
arg 00: a1 arg 00: a1
@ -222,32 +222,32 @@ EOF
test_expect_success 'intermingled arguments' ' test_expect_success 'intermingled arguments' '
test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \ test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \
> output 2> output.err && >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect << EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 2 integer: 2
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'unambiguously abbreviated option' ' test_expect_success 'unambiguously abbreviated option' '
test-parse-options --int 2 --boolean --no-bo > output 2> output.err && test-parse-options --int 2 --boolean --no-bo >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'unambiguously abbreviated option with "="' ' test_expect_success 'unambiguously abbreviated option with "="' '
test-parse-options --int=2 > output 2> output.err && test-parse-options --int=2 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -256,74 +256,74 @@ test_expect_success 'ambiguously abbreviated option' '
test_expect_code 129 test-parse-options --strin 123 test_expect_code 129 test-parse-options --strin 123
' '
cat > expect << EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: 123 string: 123
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'non ambiguous option (after two options it abbreviates)' ' test_expect_success 'non ambiguous option (after two options it abbreviates)' '
test-parse-options --st 123 > output 2> output.err && test-parse-options --st 123 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > typo.err << EOF cat >typo.err <<\EOF
error: did you mean \`--boolean\` (with two dashes ?) error: did you mean `--boolean` (with two dashes ?)
EOF EOF
test_expect_success 'detect possible typos' ' test_expect_success 'detect possible typos' '
test_must_fail test-parse-options -boolean > output 2> output.err && test_must_fail test-parse-options -boolean >output 2>output.err &&
test_must_be_empty output && test_must_be_empty output &&
test_cmp typo.err output.err test_cmp typo.err output.err
' '
cat > typo.err << EOF cat >typo.err <<\EOF
error: did you mean \`--ambiguous\` (with two dashes ?) error: did you mean `--ambiguous` (with two dashes ?)
EOF EOF
test_expect_success 'detect possible typos' ' test_expect_success 'detect possible typos' '
test_must_fail test-parse-options -ambiguous > output 2> output.err && test_must_fail test-parse-options -ambiguous >output 2>output.err &&
test_must_be_empty output && test_must_be_empty output &&
test_cmp typo.err output.err test_cmp typo.err output.err
' '
cat > expect <<EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
arg 00: --quux arg 00: --quux
EOF EOF
test_expect_success 'keep some options as arguments' ' test_expect_success 'keep some options as arguments' '
test-parse-options --quux > output 2> output.err && test-parse-options --quux >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect <<EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 1 timestamp: 1
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: yes quiet: 1
dry run: no dry run: no
file: (not set) file: (not set)
arg 00: foo arg 00: foo
@ -331,12 +331,12 @@ EOF
test_expect_success 'OPT_DATE() works' ' test_expect_success 'OPT_DATE() works' '
test-parse-options -t "1970-01-01 00:00:01 +0000" \ test-parse-options -t "1970-01-01 00:00:01 +0000" \
foo -q > output 2> output.err && foo -q >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect <<EOF cat >expect <<\EOF
Callback: "four", 0 Callback: "four", 0
boolean: 5 boolean: 5
integer: 4 integer: 4
@ -344,112 +344,112 @@ magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' ' test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' '
test-parse-options --length=four -b -4 > output 2> output.err && test-parse-options --length=four -b -4 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect <<EOF cat >expect <<\EOF
Callback: "not set", 1 Callback: "not set", 1
EOF EOF
test_expect_success 'OPT_CALLBACK() and callback errors work' ' test_expect_success 'OPT_CALLBACK() and callback errors work' '
test_must_fail test-parse-options --no-length > output 2> output.err && test_must_fail test-parse-options --no-length >output 2>output.err &&
test_i18ncmp expect output && test_i18ncmp expect output &&
test_i18ncmp expect.err output.err test_i18ncmp expect.err output.err
' '
cat > expect <<EOF cat >expect <<\EOF
boolean: 1 boolean: 1
integer: 23 integer: 23
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'OPT_BIT() and OPT_SET_INT() work' ' test_expect_success 'OPT_BIT() and OPT_SET_INT() work' '
test-parse-options --set23 -bbbbb --no-or4 > output 2> output.err && test-parse-options --set23 -bbbbb --no-or4 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_NEGBIT() and OPT_SET_INT() work' ' test_expect_success 'OPT_NEGBIT() and OPT_SET_INT() work' '
test-parse-options --set23 -bbbbb --neg-or4 > output 2> output.err && test-parse-options --set23 -bbbbb --neg-or4 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect <<EOF cat >expect <<\EOF
boolean: 6 boolean: 6
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'OPT_BIT() works' ' test_expect_success 'OPT_BIT() works' '
test-parse-options -bb --or4 > output 2> output.err && test-parse-options -bb --or4 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_NEGBIT() works' ' test_expect_success 'OPT_NEGBIT() works' '
test-parse-options -bb --no-neg-or4 > output 2> output.err && test-parse-options -bb --no-neg-or4 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' ' test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' '
test-parse-options + + + + + + > output 2> output.err && test-parse-options + + + + + + >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat > expect <<EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 12345 integer: 12345
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
test_expect_success 'OPT_NUMBER_CALLBACK() works' ' test_expect_success 'OPT_NUMBER_CALLBACK() works' '
test-parse-options -12345 > output 2> output.err && test-parse-options -12345 >output 2>output.err &&
test_must_be_empty output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
cat >expect <<EOF cat >expect <<\EOF
boolean: 0 boolean: 0
integer: 0 integer: 0
magnitude: 0 magnitude: 0
timestamp: 0 timestamp: 0
string: (not set) string: (not set)
abbrev: 7 abbrev: 7
verbose: 0 verbose: -1
quiet: no quiet: 0
dry run: no dry run: no
file: (not set) file: (not set)
EOF EOF
@ -460,7 +460,7 @@ test_expect_success 'negation of OPT_NONEG flags is not ambiguous' '
test_cmp expect output test_cmp expect output
' '
cat >>expect <<'EOF' cat >>expect <<\EOF
list: foo list: foo
list: bar list: bar
list: baz list: baz
@ -476,4 +476,118 @@ test_expect_success '--no-list resets list' '
test_cmp expect output test_cmp expect output
' '
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: -1
quiet: 3
dry run: no
file: (not set)
EOF
test_expect_success 'multiple quiet levels' '
test-parse-options -q -q -q >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: 3
quiet: 0
dry run: no
file: (not set)
EOF
test_expect_success 'multiple verbose levels' '
test-parse-options -v -v -v >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: -1
quiet: 0
dry run: no
file: (not set)
EOF
test_expect_success '--no-quiet sets --quiet to 0' '
test-parse-options --no-quiet >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: -1
quiet: 0
dry run: no
file: (not set)
EOF
test_expect_success '--no-quiet resets multiple -q to 0' '
test-parse-options -q -q -q --no-quiet >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: 0
quiet: 0
dry run: no
file: (not set)
EOF
test_expect_success '--no-verbose sets verbose to 0' '
test-parse-options --no-verbose >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: 0
quiet: 0
dry run: no
file: (not set)
EOF
test_expect_success '--no-verbose resets multiple verbose to 0' '
test-parse-options -v -v -v --no-verbose >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'
test_done test_done

View file

@ -3,11 +3,10 @@
test_description='verbose commit template' test_description='verbose commit template'
. ./test-lib.sh . ./test-lib.sh
cat >check-for-diff <<EOF write_script "check-for-diff" <<\EOF &&
#!$SHELL_PATH grep '^diff --git' "$1" >out
exec grep '^diff --git' "\$1" exit 0
EOF EOF
chmod +x check-for-diff
test_set_editor "$PWD/check-for-diff" test_set_editor "$PWD/check-for-diff"
cat >message <<'EOF' cat >message <<'EOF'
@ -23,7 +22,8 @@ test_expect_success 'setup' '
' '
test_expect_success 'initial commit shows verbose diff' ' test_expect_success 'initial commit shows verbose diff' '
git commit --amend -v git commit --amend -v &&
test_line_count = 1 out
' '
test_expect_success 'second commit' ' test_expect_success 'second commit' '
@ -39,13 +39,15 @@ check_message() {
test_expect_success 'verbose diff is stripped out' ' test_expect_success 'verbose diff is stripped out' '
git commit --amend -v && git commit --amend -v &&
check_message message check_message message &&
test_line_count = 1 out
' '
test_expect_success 'verbose diff is stripped out (mnemonicprefix)' ' test_expect_success 'verbose diff is stripped out (mnemonicprefix)' '
git config diff.mnemonicprefix true && git config diff.mnemonicprefix true &&
git commit --amend -v && git commit --amend -v &&
check_message message check_message message &&
test_line_count = 1 out
' '
cat >diff <<'EOF' cat >diff <<'EOF'
@ -96,4 +98,60 @@ test_expect_success 'verbose diff is stripped out with set core.commentChar' '
test_i18ngrep "Aborting commit due to empty commit message." err test_i18ngrep "Aborting commit due to empty commit message." err
' '
test_expect_success 'status does not verbose without --verbose' '
git status >actual &&
! grep "^diff --git" actual
'
test_expect_success 'setup -v -v' '
echo dirty >file
'
for i in true 1
do
test_expect_success "commit.verbose=$i and --verbose omitted" "
git -c commit.verbose=$i commit --amend &&
test_line_count = 1 out
"
done
for i in false -2 -1 0
do
test_expect_success "commit.verbose=$i and --verbose omitted" "
git -c commit.verbose=$i commit --amend &&
test_line_count = 0 out
"
done
for i in 2 3
do
test_expect_success "commit.verbose=$i and --verbose omitted" "
git -c commit.verbose=$i commit --amend &&
test_line_count = 2 out
"
done
for i in true false -2 -1 0 1 2 3
do
test_expect_success "commit.verbose=$i and --verbose" "
git -c commit.verbose=$i commit --amend --verbose &&
test_line_count = 1 out
"
test_expect_success "commit.verbose=$i and --no-verbose" "
git -c commit.verbose=$i commit --amend --no-verbose &&
test_line_count = 0 out
"
test_expect_success "commit.verbose=$i and -v -v" "
git -c commit.verbose=$i commit --amend -v -v &&
test_line_count = 2 out
"
done
test_expect_success "status ignores commit.verbose=true" '
git -c commit.verbose=true status >actual &&
! grep "^diff --git actual"
'
test_done test_done