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

From: Bagas Sanjaya <[email-masked]>
Date: Sun, 17 Sep 2023 16:58:14 +0700

On Fri, Sep 15, 2023 at 05:10:28PM +0200, Magnus Holmgren wrote:
> 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.

Can you provide examples?

> 
> 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.

What are you trying to accomplish with your proposed formatting verbs?

Confused...

-- 
An old man doll... just what I always wanted! - Clara