Subject: Re: Please explain avoiding history simplifications when diffing merges

From: Magnus Holmgren <[email-masked]>
Date: Fri, 15 Sep 2023 17:10:28 +0200

Friday, 8 September 2023 11:09:20 CEST, I wrote
> QGit was bitten by
> https://github.com/git/git/commit/0dec322d31db3920872f43bdd2a7ddd282a5be67

Maybe I should link to the QGit issue:
https://github.com/tibirna/qgit/issues/129

> It looks like passing --simplify-merges to override the default solves the
> problem, but I still want to ask here because I'm not sure I fully
> understand
> the reasoning:
> > the default history simplification would remove merge commits from
> > consideration if the file "path" matched the second parent.

As I wrote at the above URL, I realized that the old git log output without --
simplify-merges and the output with --simplify-merges aren't quite the same. 
The old output indeed omits some interesting merge commits, which may explain 
why the change was made, but git log --simplify-merges does include them, so 
it seems a reasonable default to me.

However, QGit has a problem: git log --diff-merges=separate includes a 
separate diff for each parent, but only for each parent with differences 
compared to the merge commit, *and* there's no custom format placeholder for 
the current parent, only for the list of parents (%P/%p). How should one go 
about adding that? I figure the format_commit_context struct in pretty.c needs 
another field.

-- 
Magnus Holmgren
./¯\_/¯\. Milient