Skip to contentSkip to conversation

Overlong lines with git-merge --log

DISCUSSION Tim Janik 3 participants 4 messages Jun 15, 2016

lore
Share & tools
lore

Tim Janik

author
#0 lore raw

Hey all.

Using git-merge --log to merge commit messages that spawn multiple lines will produce overlong summary lines.
That's because each summary line for a commit includes the entire commit message (all lines concatenated).

According to git-fmt-merge-msg(1), --log should 'populate the log message with one-line descriptions' instead of using the entire commit messages.
Which would make a lot of sense, it's just not working as advertised.

Encountered with git version 1.7.9.5.

Signature · 5 lines
Yours sincerely,
Tim Janik

---
http://timj.testbit.eu/ - Free software Author
#1 lore raw
Quoted 9 lines · Tim Janik

Using git-merge --log to merge commit messages that spawn multiple lines will produce overlong summary lines.
That's because each summary line for a commit includes the entire commit message (all lines concatenated).

According to git-fmt-merge-msg(1), --log should 'populate the log message with one-line descriptions' instead of using the entire commit messages.
Which would make a lot of sense, it's just not working as advertised.

The "subject" or "first line" is not actually the first line; these days it is typically the "first paragraph". The reason is that git always expected commit messages to look like:

one line describing the change

more detailed explanation
that might go on for several lines

or even several paragraphs

However, as people imported commits from previous systems, they ended up with a lot of commit messages where the closest thing to a subject was split across several lines like:

here's a description of the commit that is probably overly long, but that's how we did it back in CVS days

Taking just the first line of those often cuts off the useful part. It was deemed less bad to show the whole message as a subject rather than cut it off arbitrarily.

If you are developing with git and not splitting the subject out with a blank line, there are a lot of tools that are going to look ugly (e.g., format-patch will generate overly long subjects, "log --oneline" will be ugly, and browsers like "tig" and "gitk" may be overwhelmed).

-Peff

author
#2 lore raw
Quoted 3 lines · Jeff King

Taking just the first line of those often cuts off the useful part. It was deemed less bad to show the whole message as a subject rather than cut it off arbitrarily.

Thanks a lot for the explanation, I'm using git directly here, but the two cases I had indeed lacked this newline.

Signature · 5 lines
Yours sincerely,
Tim Janik

---
http://timj.testbit.eu/ - Free software Author
#3 lore raw

----- Original Message -----

Quoted 4 lines

From: "Tim Janik" <[email protected]>
Sent: Friday, November 2, 2012 9:24:29 AM
Subject: Re: Overlong lines with git-merge --log

Quoted 8 lines
Quoted 3 lines · Jeff King

Taking just the first line of those often cuts off the useful part. It was deemed less bad to show the whole message as a subject rather than cut it off arbitrarily.

Thanks a lot for the explanation, I'm using git directly here, but the two cases I had indeed lacked this newline.

FWIW we use merge --log quite extensively here at the office, and I've developed a habit to skim the extremely long lines and attempt to cut them intelligently (something I don't trust the computer to do for me). Sometimes that means taking the second or third sentence if it's a better summary, sometimes it's just abbreviating the first. Now that merge automatically spawns an editor, this is quite convenient (though it does take a bit longer).

Thanks,
Stephen