# [PATCH/RFC v3] add a commit.verbose config variable

6 messages from 2016-03-10 to 2016-03-10. Participants: Pranit Bauva, Junio C Hamano.
Thread: https://gitlist.dev/t/41665

## Pranit Bauva, 2016-03-10 18:58

Subject: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <0102015361e5441b-bbc448b5-7307-451d-a951-f016f7ae4b1d-000000@eu-west-1.amazonses.com>
URL: https://gitlist.dev/e/0102015361e5441b-bbc448b5-7307-451d-a951-f016f7ae4b1d-000000%40eu-west-1.amazonses.com

```
Since many people always run the command with this option, it would be
preferrable to specify it in the configuration file instead of passing
the option with `git commit` again and again.

Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
---
 Documentation/config.txt     | 4 ++++
 Documentation/git-commit.txt | 3 ++-
 builtin/commit.c             | 4 ++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 01cca0a..9b93f6c 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1110,6 +1110,10 @@ commit.template::
 	"`~/`" is expanded to the value of `$HOME` and "`~user/`" to the
 	specified user's home directory.
 
+commit.verbose::
+	A boolean to specify whether to always include the verbose option
+	with `git commit`. See linkgit:git-commit[1].
+
 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 9ec6b3c..3dcaac7 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -290,7 +290,8 @@ configuration variable documented in linkgit:git-config[1].
 	what changes the commit has.
 	Note that this diff output doesn't have its
 	lines prefixed with '#'. This diff will not be a part
-	of the commit message.
+	of the commit message. To activate this option permanently, the
+	configuration variable `commit.verbose` can be set to true.
 +
 If specified twice, show in addition the unified diff between
 what would be committed and the worktree files, i.e. the unstaged
diff --git a/builtin/commit.c b/builtin/commit.c
index b3bd2d4..63ee0f2 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1310,6 +1310,10 @@ static int git_status_config(const char *k, const char *v, void *cb)
 			return error(_("Invalid untracked files mode '%s'"), v);
 		return 0;
 	}
+	if (!strcmp(k, "commit.verbose")) {
+		verbose = git_config_bool(k, v);
+		return 0;
+	}
 	return git_diff_ui_config(k, v, NULL);
 }
 

--
https://github.com/git/git/pull/205

```

## Pranit Bauva, 2016-03-10 19:46

Subject: Re: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <CAFZEwPNYFBXrUUt9sgHtOYvUVZwQYV-VbyNLWzMz5MFFqH+CkA@mail.gmail.com>
URL: https://gitlist.dev/e/CAFZEwPNYFBXrUUt9sgHtOYvUVZwQYV-VbyNLWzMz5MFFqH%2BCkA%40mail.gmail.com
In-Reply-To: <0102015361e5441b-bbc448b5-7307-451d-a951-f016f7ae4b1d-000000@eu-west-1.amazonses.com>

```
Older versions of this patch can be found at :-
[v2] : http://thread.gmane.org/gmane.comp.version-control.git/288569
[v1] : http://thread.gmane.org/gmane.comp.version-control.git/287540

The changes are :
 - Remove the concept of override-verbose
 - Add the git_config_bool to the method git_status_config instead of cmd_commit

I have to yet figure out how to write the tests for this. I will see
the examples that Matthieu Moy mentioned for their implementation.

Regards,
Pranit Bauva,
IIT Kharagpur

```

## Junio C Hamano, 2016-03-10 21:34

Subject: Re: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <xmqq7fhadnkv.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqq7fhadnkv.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <0102015361e5441b-bbc448b5-7307-451d-a951-f016f7ae4b1d-000000@eu-west-1.amazonses.com>

```
Pranit Bauva <pranit.bauva@gmail.com> writes:

> diff --git a/builtin/commit.c b/builtin/commit.c
> index b3bd2d4..63ee0f2 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -1310,6 +1310,10 @@ static int git_status_config(const char *k, const char *v, void *cb)
>  			return error(_("Invalid untracked files mode '%s'"), v);
>  		return 0;
>  	}
> +	if (!strcmp(k, "commit.verbose")) {
> +		verbose = git_config_bool(k, v);
> +		return 0;
> +	}
>  	return git_diff_ui_config(k, v, NULL);
>  }

Checking the code flow in cmd_commit(), we first do the config, and
then later call parse_options(), so it is clear that giving the
initial value of 0 or 1 depending on the boolean setting would be
all that is necessary to support "--no-verbose", which makes the
patch very compact.  Good.

But doesn't this belong to git_commit_config(), not
git_STATUS_config()?  Should "commit.verbose" make output from "git
status" verbose?

```

## Pranit Bauva, 2016-03-10 21:38

Subject: Re: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <CAFZEwPP5_rBKH_=0pv_3PszLYtnznXeGJg1+yjwbiH0m_BqdZQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAFZEwPP5_rBKH_%3D0pv_3PszLYtnznXeGJg1%2ByjwbiH0m_BqdZQ%40mail.gmail.com
In-Reply-To: <xmqq7fhadnkv.fsf@gitster.mtv.corp.google.com>

```
On Fri, Mar 11, 2016 at 3:04 AM, Junio C Hamano <gitster@pobox.com>
wrote:
> But doesn't this belong to git_commit_config(), not
> git_STATUS_config()?  Should "commit.verbose" make output from "git
> status" verbose?

True. It should belong to git_commit_config(). My bad. But
surprisingly this code works. I have no idea why. I will update the
Patch and I have also finished writing test so I will include that
also.

```

## Junio C Hamano, 2016-03-10 21:46

Subject: Re: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <xmqqy49qc8ga.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqy49qc8ga.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <CAFZEwPP5_rBKH_=0pv_3PszLYtnznXeGJg1+yjwbiH0m_BqdZQ@mail.gmail.com>

```
Pranit Bauva <pranit.bauva@gmail.com> writes:

> On Fri, Mar 11, 2016 at 3:04 AM, Junio C Hamano <gitster@pobox.com>
> wrote:
>> But doesn't this belong to git_commit_config(), not
>> git_STATUS_config()?  Should "commit.verbose" make output from "git
>> status" verbose?
>
> True. It should belong to git_commit_config(). My bad. But
> surprisingly this code works. I have no idea why. I will update the
> Patch and I have also finished writing test so I will include that
> also.

If that is surprising to you, that indicates that you only tested
"commit" and not "status", I think.  If you choose commit.verbose to
apply only to "commit", but not "status", then your test should
cover both commands, i.e. when the configuration is set to true, the
default verbosity level for "git commit" should be raised, and the
verbosity level for "git status" should not be--both must be
verified in your test script.

```

## Pranit Bauva, 2016-03-10 21:49

Subject: Re: [PATCH/RFC v3] add a commit.verbose config variable
Message-ID: <CAFZEwPN=4TD+jzmwJ3gyMq+3NURB_m-6-AhqXLO+Rvx19GTTtQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAFZEwPN%3D4TD%2BjzmwJ3gyMq%2B3NURB_m-6-AhqXLO%2BRvx19GTTtQ%40mail.gmail.com
In-Reply-To: <CAFZEwPP5_rBKH_=0pv_3PszLYtnznXeGJg1+yjwbiH0m_BqdZQ@mail.gmail.com>

```
I figured it out, It first runs status_init_config(). I might have
thought "status" as status of the options and thus I may have edited
there.

On Fri, Mar 11, 2016 at 3:08 AM, Pranit Bauva <pranit.bauva@gmail.com> wrote:
> On Fri, Mar 11, 2016 at 3:04 AM, Junio C Hamano <gitster@pobox.com>
> wrote:
>> But doesn't this belong to git_commit_config(), not
>> git_STATUS_config()?  Should "commit.verbose" make output from "git
>> status" verbose?
>
> True. It should belong to git_commit_config(). My bad. But
> surprisingly this code works. I have no idea why. I will update the
> Patch and I have also finished writing test so I will include that
> also.

```
