threads / patch / 34064

patch, 2 partsstatus: introduce status.branch to enable --branch by default

Subject: [PATCH 2/2] status: introduce status.branch to enable --branch by default

## tl;dr

7 messages between Jun 8, 2013 and Jun 10, 2013. Diffs are folded; open one to read it.

replies: 6people: 5as markdown or json

Jorge Juan Garcia Garcia· Jun 8, 2013, 09:28 UTC · lore

[PATCH 1/2] status: introduce status.short to enable --short by default

Some people always run 'git status -s'. The configuration variable status.short allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-Garcia@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
---
 Documentation/config.txt |    3 +++
 builtin/commit.c         |    9 +++++++++
 config.c                 |    1 +
 t/t7508-status.sh        |   34 ++++++++++++++++++++++++++++++++++
 4 files changed, 47 insertions(+), 0 deletions(-)
Show changes to 4 files +47 −0

Documentation/config.txt, builtin/commit.c, config.c, t/t7508-status.sh

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 6e53fc5..80cdf75 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2066,6 +2066,9 @@ status.relativePaths::
 	relative to the repository root (this was the default for Git
 	prior to v1.5.4).
 
+status.short::
+	Set to true to enable --short by default in linkgit:git-status[1].
+
 status.showUntrackedFiles::
 	By default, linkgit:git-status[1] and linkgit:git-commit[1] show
 	files which are not currently tracked by Git. Directories which
diff --git a/builtin/commit.c b/builtin/commit.c
index 1621dfc..0f3429f 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1112,6 +1112,15 @@ static int git_status_config(const char *k, const char *v, void *cb)
 			s->submodule_summary = -1;
 		return 0;
 	}
+	if (!strcmp(k, "status.short")) {
+		if (!v)
+			return config_error_nonbool(k);
+		if (git_config_bool(k,v)) {
+			status_format = STATUS_FORMAT_SHORT;
+			wt_shortstatus_print(s);
+		}
+		return 0;
+	}
 	if (!strcmp(k, "status.color") || !strcmp(k, "color.status")) {
 		s->use_color = git_config_colorbool(k, v);
 		return 0;
diff --git a/config.c b/config.c
index 7a85ebd..85ddbf2 100644
--- a/config.c
+++ b/config.c
@@ -9,6 +9,7 @@
 #include "exec_cmd.h"
 #include "strbuf.h"
 #include "quote.h"
+#include "commit.h"
 
 typedef struct config_file {
 	struct config_file *prev;
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index e2ffdac..4cb2b62 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -1334,5 +1334,39 @@ test_expect_failure '.git/config ignore=all suppresses submodule summary' '
 	git config --remove-section submodule.subname &&
 	git config -f .gitmodules  --remove-section submodule.subname
 '
+test_expect_success 'setup for testing status.short' '
+    >status1 &&
+    >status2
+'
+
+test_expect_success '"status.short=true" same as "-s"' '
+    git -c status.short=true status >status2 &&
+    git status -s >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.short=true" different from "--no-short"' '
+    git -c status.short=true status >status2 &&
+    git status --no-short >status1 &&
+    test_must_fail test_cmp status1 status2
+'
+
+test_expect_success '"status.short=true" weaker than "--no-short"' '
+    git -c status.short=true status --no-short >status2 &&
+    git status --no-short >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.short=false" same as "--no-short"' '
+    git -c status.short=false status >status2 &&
+    git status --no-short >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.short=false" weaker than "-s"' '
+    git -c status.short=false status -s >status2 &&
+    git status -s >status1 &&
+    test_cmp status1 status2
+'
 
 test_done
-- 
1.7.8
Jorge Juan Garcia Garcia· Jun 8, 2013, 09:28 UTC · re: Jorge Juan Garcia Garcia · lore

Some people often run 'git status -b'. The config variable status.branch allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-Garcia@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
---
 Documentation/config.txt |    3 +++
 builtin/commit.c         |    6 ++++++
 t/t7508-status.sh        |   30 ++++++++++++++++++++++++++++++
 3 files changed, 39 insertions(+), 0 deletions(-)
Show changes to 3 files +39 −0

Documentation/config.txt, builtin/commit.c, t/t7508-status.sh

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 80cdf75..21ba9c2 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2069,6 +2069,9 @@ status.relativePaths::
 status.short::
 	Set to true to enable --short by default in linkgit:git-status[1].
 
+status.branch::
+	Set to true to enable --branch by default in linkgit:git-status[1].
+
 status.showUntrackedFiles::
 	By default, linkgit:git-status[1] and linkgit:git-commit[1] show
 	files which are not currently tracked by Git. Directories which
diff --git a/builtin/commit.c b/builtin/commit.c
index 0f3429f..d447857 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1121,6 +1121,12 @@ static int git_status_config(const char *k, const char *v, void *cb)
 		}
 		return 0;
 	}
+	if (!strcmp(k, "status.branch")) {
+		if (!v)
+			return config_error_nonbool(k);
+		s->show_branch = git_config_bool(k,v);
+		return 0;
+	}
 	if (!strcmp(k, "status.color") || !strcmp(k, "color.status")) {
 		s->use_color = git_config_colorbool(k, v);
 		return 0;
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index 4cb2b62..34cf30f 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -1369,4 +1369,34 @@ test_expect_success '"status.short=false" weaker than "-s"' '
     test_cmp status1 status2
 '
 
+test_expect_success '"status.branch=true" same as "-b"' '
+    git -c status.branch=true status -s >status2 &&
+    git status -sb >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.branch=true" different from "--no-branch"' '
+    git -c status.branch=true status -s >status2 &&
+    git status -s --no-branch  >status1 &&
+    test_must_fail test_cmp status1 status2
+'
+
+test_expect_success '"status.branch=true" weaker than "--no-branch"' '
+    git -c status.branch=true status -s --no-branch >status2 &&
+    git status -s --no-branch >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.branch=false" same as "--no-branch"' '
+    git -c status.branch=false status -s >status2 &&
+    git status -s --no-branch >status1 &&
+    test_cmp status1 status2
+'
+
+test_expect_success '"status.branch=false" weaker than "-b"' '
+    git -c status.branch=false status -sb >status2 &&
+    git status -sb >status1 &&
+    test_cmp status1 status2
+'
+
 test_done
-- 
1.7.8
Ramkumar Ramachandra· Jun 8, 2013, 15:25 UTC · re: Jorge Juan Garcia Garcia · lore

Re: [PATCH 1/2] status: introduce status.short to enable --short by default

Jorge Juan Garcia Garcia wrote:
> Some people always run 'git status -s'.
> The configuration variable status.short allows to set it by default.
Good feature.
Show 13 quoted lines
> @@ -1112,6 +1112,15 @@ static int git_status_config(const char *k, const char *v, void *cb)
>                         s->submodule_summary = -1;
>                 return 0;
>         }
> +       if (!strcmp(k, "status.short")) {
> +               if (!v)
> +                       return config_error_nonbool(k);
> +               if (git_config_bool(k,v)) {
> +                       status_format = STATUS_FORMAT_SHORT;
> +                       wt_shortstatus_print(s);
> +               }
> +               return 0;
> +       }

Incorrect. This is the wrong place to use config_error_nonbool(): this is very much a bool, and a "[status] short" in ~/.gitconfig should not error out (all boolean variables behave in the same manner). When in doubt, consult config_error_nonbool(); there's clearly a comment stating:

/*
 * Call this to report error for your variable that should not
 * get a boolean value (i.e. "[my] var" means "true").
 */

Also, why are you calling wt_shortstatus_print() here, instead of returning control to cmd_status(), which is going to do it anyway?

Junio C Hamano· Jun 9, 2013, 18:54 UTC · re: Ramkumar Ramachandra · lore

Re: [PATCH 1/2] status: introduce status.short to enable --short by default

Ramkumar Ramachandra <artagnon@gmail.com> writes:
Show 5 quoted lines
> Jorge Juan Garcia Garcia wrote:
>> Some people always run 'git status -s'.
>> The configuration variable status.short allows to set it by default.
>
> Good feature.

Is there a corresponding command line override added to help people who need to defeat such a configured-in default? Otherwise it is not a good feature yet, but just only the beginning half.

Matthieu Moy· Jun 9, 2013, 19:26 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/2] status: introduce status.short to enable --short by default

Junio C Hamano <gitster@pobox.com> writes:
Show 10 quoted lines
> Ramkumar Ramachandra <artagnon@gmail.com> writes:
>
>> Jorge Juan Garcia Garcia wrote:
>>> Some people always run 'git status -s'.
>>> The configuration variable status.short allows to set it by default.
>>
>> Good feature.
>
> Is there a corresponding command line override added to help people
> who need to defeat such a configured-in default?
Yes: "git status --no-short".

Perhaps the doc for status.short should explicitely mention that --no-short takes precedence over it.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
garciagj· Jun 10, 2013, 08:02 UTC · re: Matthieu Moy · lore

Re: [PATCH 1/2] status: introduce status.short to enable --short by default

El 2013-06-09 21:26, Matthieu Moy escribió:
Show 18 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Ramkumar Ramachandra <artagnon@gmail.com> writes:
>>
>>> Jorge Juan Garcia Garcia wrote:
>>>> Some people always run 'git status -s'.
>>>> The configuration variable status.short allows to set it by 
>>>> default.
>>>
>>> Good feature.
>>
>> Is there a corresponding command line override added to help people
>> who need to defeat such a configured-in default?
>
> Yes: "git status --no-short".
>
> Perhaps the doc for status.short should explicitely mention that
> --no-short takes precedence over it.
Yes, I will include that in the Documentation.
garciagj· Jun 10, 2013, 08:01 UTC · re: Ramkumar Ramachandra · lore

Re: [PATCH 1/2] status: introduce status.short to enable --short by default

El 2013-06-08 17:25, Ramkumar Ramachandra escribió:
Show 26 quoted lines
> Jorge Juan Garcia Garcia wrote:
>> Some people always run 'git status -s'.
>> The configuration variable status.short allows to set it by default.
>
> Good feature.
>
>> @@ -1112,6 +1112,15 @@ static int git_status_config(const char *k, 
>> const char *v, void *cb)
>>                         s->submodule_summary = -1;
>>                 return 0;
>>         }
>> +       if (!strcmp(k, "status.short")) {
>> +               if (!v)
>> +                       return config_error_nonbool(k);
>> +               if (git_config_bool(k,v)) {
>> +                       status_format = STATUS_FORMAT_SHORT;
>> +                       wt_shortstatus_print(s);
>> +               }
>> +               return 0;
>> +       }
>
> Incorrect.  This is the wrong place to use config_error_nonbool():
> this is very much a bool, and a "[status] short" in ~/.gitconfig
> should not error out (all boolean variables behave in the same
> manner).  When in doubt, consult config_error_nonbool(); there's
> clearly a comment stating:
Ok. We will change it.
Show 8 quoted lines
>
> /*
>  * Call this to report error for your variable that should not
>  * get a boolean value (i.e. "[my] var" means "true").
>  */
>
> Also, why are you calling wt_shortstatus_print() here, instead of
> returning control to cmd_status(), which is going to do it anyway?
Yes, it's obviously a mistake.

← back to recent threads