git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 4/4] commit: support commit.verbose and --no-verbose

From
René Scharfe <l.s.r@web.de>
Date
Jun 11, 2014, 20:41 UTC
Message-ID
<5398BEDE.1040305@web.de>
In-Reply-To
<1402511079-17735-5-git-send-email-caleb@calebthompson.io>
Am 11.06.2014 20:24, schrieb caleb@calebthompson.io:
Show 63 quoted lines
> Add a new configuration variable commit.verbose to implicitly pass
> `--verbose` to `git-commit`. Add `--no-verbose` to commit to negate that
> setting.
>
> Signed-off-by: Caleb Thompson<caleb@calebthompson.io>
> ---
>   Documentation/config.txt               |  5 +++++
>   Documentation/git-commit.txt           |  8 +++++++-
>   builtin/commit.c                       |  6 +++++-
>   contrib/completion/git-completion.bash |  1 +
>   t/t7507-commit-verbose.sh              | 36 ++++++++++++++++++++++++++++++++++
>   5 files changed, 54 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index cd2d651..ec51e1c 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -1017,6 +1017,11 @@ commit.template::
> 	"`~/`" is expanded to the value of `$HOME` and "`~user/`" to the
> 	specified user's home directory.
>
> +commit.verbose::
> +	A boolean to enable/disable inclusion of diff information in the
> +	commit message template when using an editor to prepare the commit
> +	message.  Defaults to false.
> +
>   credential.helper::
> 	Specify an external helper to be called when a username or
> 	password credential is needed; the helper may consult external
> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> index 0bbc8f5..8cb3439 100644
> --- a/Documentation/git-commit.txt
> +++ b/Documentation/git-commit.txt
> @@ -282,7 +282,13 @@ configuration variable documented in linkgit:git-config[1].
> 	Show unified diff between the HEAD commit and what
> 	would be committed at the bottom of the commit message
> 	template.  Note that this diff output doesn't have its
> -	lines prefixed with '#'.
> +	lines prefixed with '#'.  The `commit.verbose` configuration
> +	variable can be set to true to implicitly send this option.
> +
> +--no-verbose::
> +	Do not show the unified diff at the bottom of the commit message
> +	template.  This is the default behavior, but can be used to override
> +	the `commit.verbose` configuration variable.
>
>   -q::
>   --quiet::
> diff --git a/builtin/commit.c b/builtin/commit.c
> index 99c2044..c5b20c6 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -1489,6 +1489,10 @@ static int git_commit_config(const char *k, const char *v, void *cb)
> 		sign_commit = git_config_bool(k, v) ? "" : NULL;
> 		return 0;
> 	}
> +	if (!strcmp(k, "commit.verbose")) {
> +		verbose = git_config_bool(k, v);
> +		return 0;
> +	}
>
> 	status = git_gpg_config(k, v, NULL);
> 	if (status)
Show 6 quoted lines
> @@ -1556,7 +1560,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
> 	static struct wt_status s;
> 	static struct option builtin_commit_options[] = {
> 		OPT__QUIET(&quiet, N_("suppress summary after successful commit")),
> -		OPT__VERBOSE(&verbose, N_("show diff in commit message template")),
> +		OPT_BOOL('v', "verbose", &verbose, N_("show diff in commit message template")),

Hmm, this hunk seems to make sure that there can only be two verbosity levels, 0 and 1, while before there could be higher levels (which produce the same output as verbose = 1). This change is not mentioned in the commit message. Why is it necessary?

NB: --no-verbose already works without this hunk.
Show 71 quoted lines
> 		OPT_GROUP(N_("Commit message options")),
> 		OPT_FILENAME('F', "file", &logfile, N_("read message from file")),
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 2c59a76..b8f4b94 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -1976,6 +1976,7 @@ _git_config ()
> 		color.ui
> 		commit.status
> 		commit.template
> +		commit.verbose
> 		core.abbrev
> 		core.askpass
> 		core.attributesfile
> diff --git a/t/t7507-commit-verbose.sh b/t/t7507-commit-verbose.sh
> index 35a4d06..512eef3 100755
> --- a/t/t7507-commit-verbose.sh
> +++ b/t/t7507-commit-verbose.sh
> @@ -7,6 +7,10 @@ write_script check-for-diff <<-'EOF'
> 	exec grep '^diff --git' "$1"
>   EOF
>
> +write_script check-for-no-diff <<-EOF
> +	exec grep -v '^diff --git' "\$1"
> +EOF
> +
>   cat >message <<'EOF'
>   subject
>
> @@ -48,6 +52,38 @@ test_expect_success 'verbose diff is stripped out (mnemonicprefix)' '
> 	check_message message
>   '
>
> +test_expect_success 'commit shows verbose diff with commit.verbose true' '
> +	echo morecontent >>file &&
> +	git add file &&
> +	test_config commit.verbose true &&
> +	test_set_editor "$PWD/check-for-diff" &&
> +	git commit --amend
> +'
> +
> +test_expect_success 'commit --verbose overrides commit.verbose false' '
> +	echo evenmorecontent >>file &&
> +	git add file &&
> +	test_config commit.verbose false  &&
> +	test_set_editor "$PWD/check-for-diff" &&
> +	git commit --amend --verbose
> +'
> +
> +test_expect_success 'commit does not show verbose diff with commit.verbose false' '
> +	echo evenmorecontent >>file &&
> +	git add file &&
> +	test_config commit.verbose false &&
> +	test_set_editor "$PWD/check-for-no-diff" &&
> +	git commit --amend
> +'
> +
> +test_expect_success 'commit --no-verbose overrides commit.verbose true' '
> +	echo evenmorecontent >>file &&
> +	git add file &&
> +	test_config commit.verbose true &&
> +	test_set_editor "$PWD/check-for-no-diff" &&
> +	git commit --amend --no-verbose
> +'
> +
>   cat >diff <<'EOF'
>   This is an example commit message that contains a diff.
>
> --
> 2.0.0
>
Previous: caleb@calebthompson.ioNext: Caleb Thompson
Message 13 of 15 in “commit: support commit.verbose and --no-verbose”
  1. 0/4 commit: support commit.verbose and --no-verbosecaleb@calebthompson.io, Jun 11, 2014
  2. 1/4 commit test: Use test_config instead of git-configcaleb@calebthompson.io, Jun 11, 2014
  3. Jeremiah MahlerJun 12, 2014
  4. Caleb ThompsonJun 12, 2014
  5. Jeremiah MahlerJun 12, 2014
  6. Jeremiah MahlerJun 12, 2014
  7. Caleb ThompsonJun 12, 2014
  8. Jeremiah MahlerJun 12, 2014
  9. Caleb ThompsonJun 12, 2014
  10. 2/4 commit test: Use write_scriptcaleb@calebthompson.io, Jun 11, 2014
  11. 3/4 commit test: test_set_editor in each testcaleb@calebthompson.io, Jun 11, 2014
  12. 4/4 commit: support commit.verbose and --no-verbosecaleb@calebthompson.io, Jun 11, 2014
  13. René ScharfeJun 11, 2014
  14. Caleb ThompsonJun 11, 2014
  15. Caleb ThompsonJun 12, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.