git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Michael Lohmann <mi.al.lohmann@gmail.com>
Cc: phillip.wood123@gmail.com,  git@vger.kernel.org,
	phillip.wood@dunelm.org.uk
Subject: Re: [RFC PATCH] `log --merge` also for rebase/cherry pick/revert
Date: Fri, 12 Jan 2024 13:14:05 -0800	[thread overview]
Message-ID: <xmqqil3y9rvm.fsf@gitster.g> (raw)
In-Reply-To: <20240112150346.73735-1-mi.al.lohmann@gmail.com> (Michael Lohmann's message of "Fri, 12 Jan 2024 16:03:46 +0100")

Michael Lohmann <mi.al.lohmann@gmail.com> writes:

> Almost, but not quite: "git log —merge" only shows the commits touching the
> conflict, so it would be equivalent to (I think):
>
>    git log HEAD CHERRY_PICK_HEAD ^$(git merge-base HEAD CHERRY_PICK_HEAD) -- $(git diff --name-only --diff-filter=U --relative)
>
> (or replace CHERRY_PICK with one of the other actions)

It can certainly _reduce_ the noise, but I am not sure if it works
over the right history segment.  Let me think aloud a bit.

Let's imagine that in a history forked long time ago,

 O----O----O----O----X HEAD
  \
   Z---Z---Z---Z---A---B CHERRY_PICK_HEAD

where all commits modified the same path in question that you saw
conflicts in when your "git cherry-pick B" stopped.

I do not know what to think about the changes to that path by the
commits denoted by 'O', but the changes done to the path by commits
denoted by 'Z' should have absolutely no relevance, as the whole
point of cherry-picking B relative to A is because we do not care
about what Zs did, no?  For that matter, given that how we structure
the 3-way merge for such a cherry-pick to "move from X the same way
as you would move from A to B", how you got to X (i.e. Os) should
not matter, either.

On the other hand, such a conflict may arise from the fact that Os
and Zs made changes differently to cause the contents of the path at
X and A differ significantly.  So, OK, I can buy your argument that
what Os and Zs to the conflicted path did can be interesting when
understanding the conflict during such a cherry-pick.

>> Indeed there HEAD and CHERRY_PICK_HEAD may not share a common ancestor.
>
> True - but same for MERGE_HEAD ("git merge --allow-unrelated-histories"). I

But that is very different, isn't it?  Merging two unrelated
histories is like merging two histories where the common ancestor
had an empty tree, i.e.

      o---o---o---X HEAD
     /
   (v) an imaginary ancestor with an empty tree
     \
      o---o---o---O MERGE_HEAD

so it is a reasonable degenerated behaviour to consider what all
commits on both sides did to the paths in question.

  reply	other threads:[~2024-01-12 21:14 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-11 23:33 [RFC PATCH] `log --merge` also for rebase/cherry pick/revert Michael Lohmann
2024-01-12  0:15 ` Junio C Hamano
2024-01-12 15:50   ` [PATCH v2 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge Michael Lohmann
2024-01-12 15:50     ` [PATCH v2 2/2] revision: Implement `git log --merge` also for rebase/cherry_pick/revert Michael Lohmann
2024-01-12 20:10     ` [PATCH v2 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge Junio C Hamano
2024-01-15 11:36       ` Patrick Steinhardt
2024-01-15 17:19         ` Junio C Hamano
2024-01-17  8:14       ` [PATCH v3 " Michael Lohmann
2024-01-17  8:14         ` [PATCH v3 2/2] revision: Implement `git log --merge` also for rebase/cherry_pick/revert Michael Lohmann
2024-01-17  9:19           ` Full disclosure Michael Lohmann
2024-01-17  9:58             ` Christian Couder
2024-01-17 17:41               ` Michael Lohmann
2024-01-21  0:41                 ` Ruben Safir
2024-01-17 18:33             ` Junio C Hamano
2024-01-24  7:06           ` [PATCH v3 2/2] revision: Implement `git log --merge` also for rebase/cherry_pick/revert Elijah Newren
2024-01-24 17:19             ` Johannes Sixt
2024-01-24 19:46               ` Junio C Hamano
2024-01-24 22:06                 ` Johannes Sixt
2024-01-24 22:13                   ` Junio C Hamano
2024-02-09 23:54               ` Junio C Hamano
2024-01-24 17:34             ` Junio C Hamano
2024-02-10 23:35         ` [PATCH v4 0/2] Implement `git log --merge` also for rebase/cherry-pick/revert Philippe Blain
2024-02-10 23:35           ` [PATCH v4 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge Philippe Blain
2024-02-10 23:35           ` [PATCH v4 2/2] revision: implement `git log --merge` also for rebase/cherry-pick/revert Philippe Blain
2024-02-11  8:34             ` Johannes Sixt
2024-02-11 16:43               ` Philippe Blain
2024-02-11 17:59                 ` Johannes Sixt
2024-02-12 18:27                   ` Junio C Hamano
2024-02-12 11:02             ` Phillip Wood
2024-02-13 13:27               ` Philippe Blain
2024-02-14 11:02                 ` Phillip Wood
2024-02-13  8:33             ` Jean-Noël Avila
2024-02-13 13:14               ` Philippe Blain
2024-02-25 21:56           ` [PATCH v5 0/2] Implement " Philippe Blain
2024-02-25 21:56             ` [PATCH v5 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge Philippe Blain
2024-02-26 17:22               ` Jean-Noël Avila
2024-02-26 17:54                 ` Philippe Blain
2024-02-25 21:56             ` [PATCH v5 2/2] revision: implement `git log --merge` also for rebase/cherry-pick/revert Philippe Blain
2024-02-26  4:35               ` Junio C Hamano
2024-02-26 17:43                 ` Philippe Blain
2024-02-27 14:00             ` [PATCH v5 0/2] Implement " Phillip Wood
2024-02-27 18:30               ` Junio C Hamano
2024-02-28 13:54             ` [PATCH v6 " Philippe Blain
2024-02-28 13:54               ` [PATCH v6 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge Philippe Blain
2024-02-28 13:54               ` [PATCH v6 2/2] revision: implement `git log --merge` also for rebase/cherry-pick/revert Philippe Blain
2024-02-28 14:40               ` [PATCH v6 0/2] Implement " phillip.wood123
2024-03-02 15:35                 ` Philippe Blain
2024-01-12  7:35 ` [RFC PATCH] `log --merge` also for rebase/cherry pick/revert Johannes Sixt
2024-01-12  7:59   ` Johannes Sixt
2024-01-12 20:18   ` Junio C Hamano
2024-01-12 11:01 ` phillip.wood123
2024-01-12 15:03   ` Michael Lohmann
2024-01-12 21:14     ` Junio C Hamano [this message]
2024-01-15 10:48     ` Phillip Wood
2024-01-12 20:21   ` Junio C Hamano
2024-01-12 21:06     ` Michael Lohmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqil3y9rvm.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=mi.al.lohmann@gmail.com \
    --cc=phillip.wood123@gmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).