Subject: Re: Bug: "git log --format='format:%+s%+b'" doesn't insert newline before body

From: Ilya Tumaykin <[email-masked]>
Date: Mon, 25 Jul 2016 10:51:13 +0300

On Monday 25 July 2016 09:33:00 Johannes Schindelin wrote:
> Hi Ilya,
> 
> On Sun, 24 Jul 2016, Ilya Tumaykin wrote:
> > Steps to reproduce:
> > $ git init
> > $ >123
> > $ git add 123
> > $ git commit -v -m 'This is subject' -m 'And this is body'
> > $ git --no-pager log -1 --format='format:%+s%+b'
> > 
> > Actual results:
> > ```
> > 
> > This is subject
> > And this is body
> > ```
> > 
> > Expected results:
> > ```
> > 
> > This is subject
> > 
> > And this is body
> > ```
> 
> The empty line between commit subject and body is neither part of the
> subject nor of the body. That means that the above-mentioned expectation
> was incorrect.

According to 'git-log' man page '%+b' should insert linefeed "immediately 
before the expansion if and only if the placeholder expands to a non-empty 
string." Here "%b" expands to a non-empty string, thus I expect a linefeed 
before it. Or am I misinterpreting man page somehow?

> Unless you somehow allow empty commit messages (Git does not, unless you
> play games with low-level commands), the second '+' is unnecessarily
> conditional. Therefore "%s%n%+b" *might* do what you intended (I would not
> know, because that information was missing from the report).

I want to display '%B', but add colours to '%s'. Thus I have to separately 
include '%s' and '%b', and not just '%B'. I was using '%+s%n%+b' with extra 
colour formatting as a workaround for some time now.

> Ciao,
> Johannes

-- 
Best regards.
Ilya Tumaykin.