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

4 messages from 2015-01-15 to 2015-01-15. Participants: Francesc Zacarias, Michael J Gruber, Junio C Hamano.
Thread: https://gitlist.dev/t/38371

## Francesc Zacarias, 2015-01-15 13:55

Subject: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"
Message-ID: <CAEKevnWfFq9gyN8Ga8zXUDwk_+Mk6RK0HVT-+sbejjVPw0U0=w@mail.gmail.com>
URL: https://gitlist.dev/e/CAEKevnWfFq9gyN8Ga8zXUDwk_%2BMk6RK0HVT-%2BsbejjVPw0U0%3Dw%40mail.gmail.com

```
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, 2015-01-15 16:23

Subject: Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"
Message-ID: <54B7E98B.6020907@drmicha.warpmail.net>
URL: https://gitlist.dev/e/54B7E98B.6020907%40drmicha.warpmail.net
In-Reply-To: <CAEKevnWfFq9gyN8Ga8zXUDwk_+Mk6RK0HVT-+sbejjVPw0U0=w@mail.gmail.com>

```
Francesc Zacarias schrieb am 15.01.2015 um 14:55:
> 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, 2015-01-15 17:39

Subject: Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"
Message-ID: <xmqq8uh47xkq.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqq8uh47xkq.fsf%40gitster.dls.corp.google.com
In-Reply-To: <54B7E98B.6020907@drmicha.warpmail.net>

```
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, 2015-01-15 19:25

Subject: Re: cosmetic bug: "git show --pretty:format" produces different output than "git show --format"
Message-ID: <xmqqegqv7sn8.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqqegqv7sn8.fsf%40gitster.dls.corp.google.com
In-Reply-To: <54B7E98B.6020907@drmicha.warpmail.net>

```
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]).

```
