Skip to contentSkip to conversation

describe-doc:fix a obscure error description in the git log documentation

PATCH In review Andy AO via GitGitGadget 4 participants 8 messages May 31, 2021 – Jun 8, 2021 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 describe-doc:fix a obscure error description in the git log documentation

From: zen96285 <[email protected]>

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

---
describe-doc:fix a obscure error description in the git log documenta…

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1030%2FAndy-AO%2Ffix_a_obscure_error_description_in_the_git_log_documentation-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1030/Andy-AO/fix_a_obscure_error_description_in_the_git_log_documentation-v1
Pull-Request: https://github.com/git/git/pull/1030

 Documentation/git-log.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Documentation/git-log.txt +1 -1
index 1bbf865a1b2d..37a4694b060a 100644
@@ -39,7 +39,7 @@ OPTIONS
 	full ref name (including prefix) will be printed. If 'auto' is
 	specified, then if the output is going to a terminal, the ref names
 	are shown as if 'short' were given, otherwise no ref names are
-	shown. The default option is 'short'.
+	shown. The default option is 'auto'.
 
 --decorate-refs=<pattern>::
 --decorate-refs-exclude=<pattern>::

base-commit: 4e42405f00ecbbee412846f48cb0253efeebe726

Signature · 1 line
gitgitgadget
#1 lore raw

Hi Andy, welcome to Git mailing list!

Quoted 6 lines · Andy AO via GitGitGadget

From: zen96285 <[email protected]>

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

Why are info generated with 'short' option (and not 'auto') can be assigned to a variable?

Documentation/git-log.txt OPTIONS · line 43

Quoted 11 lines
Documentation/git-log.txt +1 -1
index 1bbf865a1b2d..37a4694b060a 100644
@@ -39,7 +39,7 @@ OPTIONS
  	full ref name (including prefix) will be printed. If 'auto' is
  	specified, then if the output is going to a terminal, the ref names
  	are shown as if 'short' were given, otherwise no ref names are
-	shown. The default option is 'short'.
+	shown. The default option is 'auto'.
 

Looks OK to me, thanks.

Signature · 1 line
An old man doll... just what I always wanted! - Clara
#2 lore raw
In reply to Andy AO via GitGitGadget
Quoted 5 lines · Andy AO via GitGitGadget

From: zen96285 <[email protected]>

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

Please use your real name and wrap your commit message at 50 characters for subject line and 72 characters for body.

Let's the commit message aside.

The default option is documented correctly as short. Please check out builtin/log.c:decorate_callback and builtin/log.c:parse_decoration_style.

Below command print nothing in my machine:

	git log --decorate -1 >/tmp/default
	git log --decorate=short -1 >/tmp/short
	cmp /tmp/default /tmp/short

I'm curious about your config and/or command invocation. From the code, I can't guess which scenario that's different.

I think you meant:

git log -1 >/tmp/no-decorate

In that case, please check your "log.decorate" config.

Signature · 1 line
Danh
#3 lore raw
Quoted 2 lines · Đoàn Trần Công Danh

Please use your real name and wrap your commit message at 50 characters for subject line and 72 characters for body.

Very good suggestions. Thanks for raising these issues.

Quoted 4 lines

The default option is documented correctly as short. Please check out builtin/log.c:decorate_callback and builtin/log.c:parse_decoration_style.

Quoted 8 lines

Below command print nothing in my machine:

	git log --decorate -1 >/tmp/default
	git log --decorate=short -1 >/tmp/short
	cmp /tmp/default /tmp/short

I'm curious about your config and/or command invocation. From the code, I can't guess which scenario that's different.

You two are thinking about two "defaults", I think. If a --decorate option you give does not say which kind of decoration you want, by default, you see the short output. The above shows that.

If you do not give any --decorate option, the command behaves as if you gave --decorate=auto, which is what the patch author wanted to say, I think.

Quoted 3 lines

I think you meant:

git log -1 >/tmp/no-decorate

Yes, and this (with redirection to file), I think you do not get any decoration---that is what you get from --decorate=auto, i.e.

	git log --decorate=auto -1 >/tmp/auto-decorate

I think the default discussed in the paragraph the patch touches is "what happens if you do not say what kind, i.e. "--decorate" not "--decorate=<what kind>", so "the default is 'short'" is correct, but at the same time, "even if you do not say --decorate, you'll see short decoration when on a terminal" is worth mentioning somewhere.

#4 lore raw
Quoted 7 lines · Junio C Hamano
Quoted 3 lines

I think you meant:

git log -1 >/tmp/no-decorate

Yes, and this (with redirection to file), I think you do not get any decoration---that is what you get from --decorate=auto, i.e.

Quoted 7 lines
	git log --decorate=auto -1 >/tmp/auto-decorate

I think the default discussed in the paragraph the patch touches is "what happens if you do not say what kind, i.e. "--decorate" not "--decorate=<what kind>", so "the default is 'short'" is correct, but at the same time, "even if you do not say --decorate, you'll see short decoration when on a terminal" is worth mentioning somewhere.

I forgot that I have log.decorate configured to 'short'. *facepalm*

I think something like this should be nice.

----8<----

Documentation/git-log.txt +3 -1
index 1bbf865a1b..0498e7bacb 100644
@@ -39,7 +39,9 @@ OPTIONS
 	full ref name (including prefix) will be printed. If 'auto' is
 	specified, then if the output is going to a terminal, the ref names
 	are shown as if 'short' were given, otherwise no ref names are
-	shown. The default option is 'short'.
+	shown. The option `--decorate` is short-hand for `--decorate=short`.
+	Default to configuration value of `log.decorate` if configured,
+	otherwise, `auto`.
 
 --decorate-refs=<pattern>::
 --decorate-refs-exclude=<pattern>::

---->8---------

Andy, feel free to pick this up and re-wording however you like.

Signature · 1 line
Danh
#5 lore raw
In reply to Đoàn Trần Công Danh

Hi Đoàn,

Quoted 9 lines · Đoàn Trần Công Danh
Quoted 5 lines · Andy AO via GitGitGadget

From: zen96285 <[email protected]>

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

Please use your real name and wrap your commit message at 50 characters for subject line and 72 characters for body.

I think the case here was Andy forwarded this patch from someone, which happened to be also himself. Maybe that From: line above can be removed, unless that he forwarded from other people (in which From: line must be preserved).

Signature · 1 line
An old man doll... just what I always wanted! - Clara
#6 lore raw
Quoted 10 lines · Bagas Sanjaya

Hi Đoàn,

Quoted 7 lines · Đoàn Trần Công Danh
Quoted 5 lines · Andy AO via GitGitGadget

From: zen96285 <[email protected]>

The git log documentation says "The default option is 'short'." This is wrong. After testing, the default value of '--decorate' is 'auto', not 'short'.

There is no difference between 'auto' and 'short' in terminal, but there is a significant difference in how they behave in the shell.The information generated by the 'short' can be saved in shell variables, while the 'auto' can't.

Quoted 7 lines
Quoted 2 lines

Please use your real name and wrap your commit message at 50 characters for subject line and 72 characters for body.

I think the case here was Andy forwarded this patch from someone, which happened to be also himself. Maybe that From: line above can be removed, unless that he forwarded from other people (in which From: line must be preserved).

Andy is using GitGitGadget bridge.
That bridge uses its own email address ([email protected]).

Thus, the identity in the RFC 822's header: "From" should be ignored, and we should use the "From: " line in body instead.

In principle, GitGitGadget will use the Author identity in the commit that was pushed into GitHub to generate such "From: " line. So, it's Andy's resposibility to configure correct core.name and core.email in Andy's machine, and create a commit with correct authorship. Otherwise, GitGitGadget will create above message.

Hope that help.

Signature · 1 line
Danh
#7 lore raw

PATCH 1/1 doc/log: correct default for --decorate

In reply to Andy AO via GitGitGadget

There're two different default options for log --decorate:
* Should --decorate be given without any arguments, it's default to short
* Should neither --decorate nor --no-decorate be given, it's default to the log.decorate or auto.

We documented the former, but not the latter.

Let's document them, too.

---

I'm reluctant to send this out since I would like to see Andy get familiar with the list. However, it's a while since the original patch.

 Documentation/git-log.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
Documentation/git-log.txt +3 -1
index 1bbf865a1b..0498e7bacb 100644
@@ -39,7 +39,9 @@ OPTIONS
 	full ref name (including prefix) will be printed. If 'auto' is
 	specified, then if the output is going to a terminal, the ref names
 	are shown as if 'short' were given, otherwise no ref names are
-	shown. The default option is 'short'.
+	shown. The option `--decorate` is short-hand for `--decorate=short`.
+	Default to configuration value of `log.decorate` if configured,
+	otherwise, `auto`.
 
 --decorate-refs=<pattern>::
 --decorate-refs-exclude=<pattern>::
Signature · 1 line
2.32.0.5.gc7fdd17fde