threads / bug / 38371

cosmetic bug: "git show --pretty:format" produces different output than "git show --format"

Subject: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"

## tl;dr

4 messages between Jan 15, 2015 and Jan 15, 2015.

replies: 3people: 3as markdown or json

Francesc Zacarias· Jan 15, 2015, 13:55 UTC · lore
Hi!

I noticed that git produces differing output for "git show --pretty:format show" and "git show --format", even though the man page says that both are equivalent. "git show --format" always appends an empty line at the end. The only way I've found to get rid of that empty line in --format is by adding -s option.

So, "git show --pretty:format" and "git show -s --format" do produce the same output.

I can reproduce this issue in Ubuntu Trusty (git version 1.9.1) and Debian Jessie (git version 2.1.4).

Michael J Gruber· Jan 15, 2015, 16:23 UTC · re: Francesc Zacarias · lore

Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"

Francesc Zacarias schrieb am 15.01.2015 um 14:55:
Show 15 quoted lines
> Hi!
> 
> I noticed that git produces differing output for
> "git show --pretty:format show" and "git show --format", even though
> the man page says that both are equivalent.
> "git show --format" always appends an empty line at the end. The only
> way I've found to get rid of that empty line in --format is by adding
> -s option.
> 
> So, "git show --pretty:format" and "git show -s --format" do produce
> the same output.
> 
> I can reproduce this issue in Ubuntu Trusty (git version 1.9.1) and
> Debian Jessie (git version 2.1.4).
> 

The first part of the man page is a bit sloppy, but refers to the FORMAT section. There, it says that "--pretty" is equivalent to "--pretty=tformat:" which is different from "--pretty=format:".

Unfortunately, "--format" seems to be parsed as ("--pretty" and therefore?) "--pretty=tformat:" which I consider a bug.

Michael
Junio C Hamano· Jan 15, 2015, 17:39 UTC · re: Michael J Gruber · lore

Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"

Michael J Gruber <git@drmicha.warpmail.net> writes:
> Unfortunately, "--format" seems to be parsed as ("--pretty" and
> therefore?) "--pretty=tformat:" which I consider a bug.

"tformat:" was introduced to fix "format:, because many people found the latter hard to use, probably because most of the time they wanted to use the feature to show one-line-per-commit and a LF after each record ("terminator semantics" where 't' in "tformat:" comes from) made more sense in that context, compared to a LF between each record ("delimiter semantics").

Of course, "format:" that uses the delimiter semantics has its uses; after all, the delimiter semantics is what is used for canned formats, other than --oneline.

It was a deliberate design decision to make "--format=<string>" as a short-hand for "--pretty=tformat:<string>", favouring "tformat:" over "format:", AFAIK. To use the facility to show a break between each (likely multi-line) record, use "--pretty=format:<string>", not "--pretty=tformat:<string>" aka "--format=<string>".

Junio C Hamano· Jan 15, 2015, 19:25 UTC · re: Michael J Gruber · lore

Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"

Michael J Gruber <git@drmicha.warpmail.net> writes:
> The first part of the man page is a bit sloppy, but refers to the FORMAT
> section. There, it says that "--pretty" is equivalent to
> "--pretty=tformat:" which is different from "--pretty=format:".

It is indeed sloppy. It says --(pretty|format)=<format> can take these canned <format>s or 'format:<string>', but

 - it does not say it can also take 'tformat:<string>' at all; and
 - it does not say a <format> that is none of the above is dwimmed
   with 'tformat:' prefixed.
Perhaps something like this is needed.
 Documentation/pretty-options.txt | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 8569e29..7e17af9 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -3,9 +3,13 @@
 
 	Pretty-print the contents of the commit logs in a given format,
 	where '<format>' can be one of 'oneline', 'short', 'medium',
-	'full', 'fuller', 'email', 'raw' and 'format:<string>'.  See
-	the "PRETTY FORMATS" section for some additional details for each
-	format.  When omitted, the format defaults to 'medium'.
+	'full', 'fuller', 'email', 'raw', 'format:<string>'
+	and 'tformat:<string>'.  When '<format>' is none of the above,
+	acts as if '--pretty=tformat:<format>' were given.
++
+See
+the "PRETTY FORMATS" section for some additional details for each
+format.  When omitted, the format defaults to 'medium'.
 +
 Note: you can specify the default pretty format in the repository
 configuration (see linkgit:git-config[1]).

← back to recent threads