git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Merge commit diff results are confusing and inconsistent

From
RDRobert Dailey <rcdailey.lists@gmail.com>
Date
May 7, 2019, 14:41 UTC
Message-ID
<CAHd499DvwcHGkSF6DjivvceUaMRO994Q8e1JrjNqjzpQkhDMFg@mail.gmail.com>
In-Reply-To
<CAHd499BkdpsA2BdB0Hsv3xXzpMyMzW8CSuYf2gQX0Jf7OoYBGw@mail.gmail.com>
On Tue, May 7, 2019 at 9:10 AM Robert Dailey <rcdailey.lists@gmail.com> wrote:
Show 27 quoted lines
> Your example is very helpful. I understand what you're saying for
> conflicted lines. But the "whatever the default merge resolution would
> have been" doesn't exist, because there's no reality where line 1 in
> color.txt can be something "automatic" (i.e. deduced by git). The only
> reality for the merge commit is some hand-edited replacement to line
> 1. So there is no "diff what I see with some alternate reality".
>
> The majority use case I'm interested in is seeing net-positive changes
> that happen in merge commits. Normally I take for granted that merge
> commits have nothing meaningful in them (meaningful here defined as
> something unexpected for a merge commit). But what if someone makes a
> poor decision and does some crazy refactoring in 1 file and amends it
> into a merge commit? Let's also say that these changes are done to a
> file that wasn't modified in any parent (say a unrelated.txt next to
> your color.txt). Since neither parent cares about that file for the
> purposes of the merge, I am trying to make sense of a revision
> specification that can be used to see what they did to that file.
>
> Even ignoring that issue, the more concerning observation of mine is
> that `diff @^!` produces any output at all. If you exclude both
> parents, why do I see a diff for parent 2 (I see the complete diff of
> the branch that was merged in)?
>
> Again, thank you for your example, you definitely made things very
> clear for me. I see where the confusion is. And I think --cc is a good
> way to get more context. At this point I'm just concerned about the
> @^! behavior with merge commits & diff.

Also I'm really confused how you got diff-tree to work. If I pick any arbitrary SHA1 of a merge commit in my existing repo's history, diff-tree produces only a SHA1 as the result:

$ git diff-tree --cc bdd47a73d bdd47a73d18948aa46a8a7aa964543f0d989ffd4

I tried with just `-c` as well; same result.
Previous: Robert DaileyNext: Denton Liu
Message 7 of 12 in “Merge commit diff results are confusing and inconsistent”
  1. Robert DaileyMay 3, 2019
  2. Eckhard MaaßMay 3, 2019
  3. Robert DaileyMay 6, 2019
  4. Eckhard MaaßMay 6, 2019
  5. Ævar Arnfjörð BjarmasonMay 6, 2019
  6. Robert DaileyMay 7, 2019
  7. Robert DaileyMay 7, 2019
  8. Denton LiuMay 7, 2019
  9. Eckhard MaaßMay 7, 2019
  10. Ævar Arnfjörð BjarmasonMay 7, 2019
  11. Elijah NewrenMay 7, 2019
  12. Philip OakleyMay 11, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.