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

[PATCH v3 5/5] commit: support commit.verbose and --no-verbose

From
Caleb Thompson <cjaysson@gmail.com>
Date
May 26, 2014, 18:56 UTC
Message-ID
<1401130586-93105-6-git-send-email-caleb@calebthompson.io>
In-Reply-To
<1401130586-93105-1-git-send-email-caleb@calebthompson.io>

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 1932e9b..a245928 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1009,6 +1009,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 9cfef6c..7978d7f 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1417,6 +1417,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)
@@ -1484,7 +1488,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")),
 
 		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 310b68b..b9eb317 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
 
@@ -49,6 +53,38 @@ test_expect_success 'verbose diff is stripped out (mnemonicprefix)' '
 	check_message message
 '
 
+test_expect_success 'commit shows verbose diff with set 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 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.
 
-- 
1.9.3
Previous: Eric SunshineNext: Jeremiah Mahler
Message 19 of 25 in “commit: support commit.verbose and --no-verbose”
  1. commit: support commit.verbose and --no-verboseCaleb Thompson, May 25, 2014
  2. Jeremiah MahlerMay 25, 2014
  3. Jeremiah MahlerMay 25, 2014
  4. Duy NguyenMay 25, 2014
  5. Eric SunshineMay 25, 2014
  6. 0/5 commit: support commit.verbose and --no-verboseCaleb Thompson, May 26, 2014
  7. 1/5 commit test: Use test_config instead of git-configCaleb Thompson, May 26, 2014
  8. 2/5 commit test: Change $PWD to $(pwd)Caleb Thompson, May 26, 2014
  9. Johannes SixtMay 27, 2014
  10. Eric SunshineMay 27, 2014
  11. Jeremiah MahlerMay 27, 2014
  12. Johannes SixtMay 27, 2014
  13. David KastrupMay 27, 2014
  14. 3/5 commit test: Use write_scriptCaleb Thompson, May 26, 2014
  15. Eric SunshineMay 27, 2014
  16. Junio C HamanoMay 27, 2014
  17. 4/5 commit test: test_set_editor in each testCaleb Thompson, May 26, 2014
  18. Eric SunshineMay 27, 2014
  19. 5/5 commit: support commit.verbose and --no-verboseCaleb Thompson, May 26, 2014
  20. Jeremiah MahlerMay 26, 2014
  21. Caleb ThompsonMay 26, 2014
  22. Jeremiah MahlerMay 26, 2014
  23. Jeremiah MahlerMay 26, 2014
  24. Caleb ThompsonMay 26, 2014
  25. Jeremiah MahlerMay 26, 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.