From: Junio C Hamano <gitster@pobox.com>
To: "Julia Evans via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, ps@pks.im, Jeff King <peff@peff.net>,
"D. Ben Knoble" <ben.knoble@gmail.com>,
Julia Evans <julia@jvns.ca>
Subject: Re: [PATCH v4 1/6] doc: add new gitmergeconflicts man page
Date: Fri, 23 Oct 2026 12:14:22 -0700 [thread overview]
Message-ID: <xmqqtsmc44c1.fsf@gitster.g> (raw)
In-Reply-To: <486a77dbd78e111f66f8878594a30974c2abe53f.1792764293.git.gitgitgadget@gmail.com> (Julia Evans via GitGitGadget's message of "Fri, 23 Oct 2026 14:04:48 +0000")
"Julia Evans via GitGitGadget" <gitgitgadget@gmail.com> writes:
> Things to potentially improve in future docs revisions:
>
> - The explanation of zdiff3 is unsatisfying. It would be good if we
> could have a clear example of a case where zdiff3 is helpful and a
> case where it's harmful, and if we could give a better sense for
> the reasons why users are actually choosing zdiff3 over diff3
> (or the reverse) in real life.
Is this a stale comment? I think you reduced this to just a side
note that says `shoter but ambiguous`, which is probably good
enough.
> +[[diff3]]
> +DIFF3
> +-----
> +
> +By default, Git doesn't include the original code when formatting
> +a merge conflict. To include the original code, you can set the
> +configuration option `merge.conflictstyle` to `diff3`.
> +This extra context can make it much easier to understand what's
> +happening in a merge conflict.
> +
> +Here's an example of what a merge conflict would look like when using
> +`diff3`. There's an extra section (between `|||||||` and `=======`)
> +with the original code.
> +
> +----
> +FRUITS = [
> + "apple",
> +<<<<<<< HEAD
> + "cherry",
> + "mango",
> +||||||| 1c22e48
> + "banana",
> + "cherry",
These two should be indented with spaces the same way as all the
other lines in this list.
> + "mangoooo",
> +=======
> + "banana",
> + "mango",
> +>>>>>>> add-fruit
> + "orange",
> +]
> +----
> +
> +With this view, you can see that both sides fixed a spelling
> +mistake in "mango", and each removed one fruit to the list.
", and each removed one from the list", I think.
> +This makes it more clear how to resolve the merge conflict: since one
> +side removed `banana` and one side removed `cherry`, it would probably
> +make sense to remove both from the list, like this:
The reason why removal becomes the correct resolution is not just
one side removed, but the fact that the other side did not touch
what was removed by one side. The "indifference by the other" is
what makes one's removal the preferred action by the semantics of
3-way merge.
So, let's rewrite the reason a bit more tightly.
since one side removed `banana` while the other side did not
touch, and the same happend to `cherry`, it makes sense to
remove both from the list ...
or somethig like that.
Other than that, I did not see anything questionable in the 6
patches.
next prev parent reply other threads:[~2026-10-23 19:14 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-24 14:44 [PATCH 0/7] [doc] Add new page on merge conflicts Julia Evans via GitGitGadget
2026-09-24 14:44 ` [PATCH 1/7] [doc] Add new gitmergeconflicts man page Julia Evans via GitGitGadget
2026-09-24 20:36 ` Junio C Hamano
2026-09-24 22:04 ` Junio C Hamano
2026-09-30 13:19 ` Patrick Steinhardt
2026-09-30 19:53 ` Julia Evans
2026-09-30 20:37 ` Junio C Hamano
2026-10-01 5:14 ` Patrick Steinhardt
2026-10-01 12:10 ` Julia Evans
2026-10-02 17:58 ` Junio C Hamano
2026-10-05 16:54 ` Julia Evans
2026-10-05 17:22 ` Junio C Hamano
2026-10-05 19:11 ` Julia Evans
2026-09-24 14:44 ` [PATCH 2/7] [doc] git-merge: link to new merge conflicts guide Julia Evans via GitGitGadget
2026-09-25 16:36 ` D. Ben Knoble
2026-09-25 16:59 ` Julia Evans
2026-09-25 18:19 ` Junio C Hamano
2026-09-25 19:32 ` Ben Knoble
2026-09-25 21:49 ` Junio C Hamano
2026-09-25 19:34 ` Ben Knoble
2026-10-02 17:01 ` Julia Evans
2026-10-02 17:50 ` Junio C Hamano
2026-10-02 18:53 ` Julia Evans
2026-10-02 21:38 ` Junio C Hamano
2026-10-03 2:25 ` D. Ben Knoble
2026-10-03 4:12 ` Junio C Hamano
2026-09-30 13:19 ` Patrick Steinhardt
2026-09-24 14:44 ` [PATCH 3/7] [doc] git-rebase: " Julia Evans via GitGitGadget
2026-09-24 14:44 ` [PATCH 4/7] [doc] git-revert: " Julia Evans via GitGitGadget
2026-09-24 14:44 ` [PATCH 5/7] [doc] git-cherry-pick: " Julia Evans via GitGitGadget
2026-09-25 17:17 ` Junio C Hamano
2026-09-28 20:58 ` Julia Evans
2026-09-28 21:25 ` Junio C Hamano
2026-09-24 14:44 ` [PATCH 6/7] [doc] git-pull: " Julia Evans via GitGitGadget
2026-09-24 14:44 ` [PATCH 7/7] [doc] ignore conflict markers in gitmergeconflicts.adoc Julia Evans via GitGitGadget
2026-10-07 21:21 ` Junio C Hamano
2026-10-09 12:06 ` Julia Evans
2026-09-24 22:20 ` [PATCH 0/7] [doc] Add new page on merge conflicts Junio C Hamano
2026-09-24 23:37 ` Jeff King
2026-09-28 20:41 ` Julia Evans
2026-09-29 1:32 ` Jeff King
2026-09-29 1:56 ` Junio C Hamano
2026-09-25 16:25 ` D. Ben Knoble
2026-10-02 17:39 ` Julia Evans
2026-10-03 2:29 ` D. Ben Knoble
2026-10-05 18:49 ` Julia Evans
2026-10-06 16:53 ` D. Ben Knoble
2026-10-06 17:09 ` D. Ben Knoble
2026-10-09 12:00 ` [PATCH v2 0/6] " Julia Evans via GitGitGadget
2026-10-09 12:00 ` [PATCH v2 1/6] doc: add new gitmergeconflicts man page Julia Evans via GitGitGadget
2026-10-09 17:58 ` Junio C Hamano
2026-10-09 18:53 ` Julia Evans
2026-10-09 21:54 ` Junio C Hamano
2026-10-10 1:45 ` Junio C Hamano
2026-10-09 12:00 ` [PATCH v2 2/6] doc: git-merge: link to new merge conflicts guide Julia Evans via GitGitGadget
2026-10-09 18:20 ` Junio C Hamano
2026-10-09 12:00 ` [PATCH v2 3/6] doc: git-rebase: " Julia Evans via GitGitGadget
2026-10-09 18:22 ` Junio C Hamano
2026-10-09 12:00 ` [PATCH v2 4/6] doc: git-revert: " Julia Evans via GitGitGadget
2026-10-09 18:24 ` Junio C Hamano
2026-10-09 12:00 ` [PATCH v2 5/6] doc: git-cherry-pick: " Julia Evans via GitGitGadget
2026-10-09 18:26 ` Junio C Hamano
2026-10-09 20:12 ` Julia Evans
2026-10-09 12:00 ` [PATCH v2 6/6] doc: git-pull: " Julia Evans via GitGitGadget
2026-10-09 18:27 ` Junio C Hamano
2026-10-09 15:41 ` [PATCH v2 0/6] [doc] Add new page on merge conflicts Junio C Hamano
2026-10-09 15:53 ` Julia Evans
2026-10-09 22:10 ` Ben Knoble
2026-10-09 18:36 ` Junio C Hamano
2026-10-12 14:53 ` [PATCH v3 " Julia Evans via GitGitGadget
2026-10-12 14:53 ` [PATCH v3 1/6] doc: add new gitmergeconflicts man page Julia Evans via GitGitGadget
2026-10-12 18:16 ` Junio C Hamano
2026-10-14 19:24 ` Julia Evans
2026-10-14 22:08 ` Junio C Hamano
2026-10-13 11:07 ` Patrick Steinhardt
2026-10-14 19:50 ` Julia Evans
2026-10-12 14:53 ` [PATCH v3 2/6] doc: git-merge: link to new merge conflicts guide Julia Evans via GitGitGadget
2026-10-12 14:53 ` [PATCH v3 3/6] doc: git-rebase: " Julia Evans via GitGitGadget
2026-10-12 14:53 ` [PATCH v3 4/6] doc: git-revert: " Julia Evans via GitGitGadget
2026-10-12 14:53 ` [PATCH v3 5/6] doc: git-cherry-pick: " Julia Evans via GitGitGadget
2026-10-13 11:07 ` Patrick Steinhardt
2026-10-12 14:53 ` [PATCH v3 6/6] doc: git-pull: " Julia Evans via GitGitGadget
2026-10-12 15:53 ` [PATCH v3 0/6] [doc] Add new page on merge conflicts D. Ben Knoble
2026-10-12 20:44 ` Julia Evans
2026-10-12 18:17 ` Junio C Hamano
2026-10-12 18:37 ` Junio C Hamano
2026-10-23 14:04 ` [PATCH v4 " Julia Evans via GitGitGadget
2026-10-23 14:04 ` [PATCH v4 1/6] doc: add new gitmergeconflicts man page Julia Evans via GitGitGadget
2026-10-23 19:14 ` Junio C Hamano [this message]
2026-10-26 12:35 ` Julia Evans
2026-10-26 14:37 ` Junio C Hamano
2026-10-26 14:47 ` Julia Evans
2026-10-26 17:22 ` Junio C Hamano
2026-10-23 14:04 ` [PATCH v4 2/6] doc: git-merge: link to new merge conflicts guide Julia Evans via GitGitGadget
2026-10-23 14:04 ` [PATCH v4 3/6] doc: git-rebase: " Julia Evans via GitGitGadget
2026-10-23 14:04 ` [PATCH v4 4/6] doc: git-revert: " Julia Evans via GitGitGadget
2026-10-23 14:04 ` [PATCH v4 5/6] doc: git-cherry-pick: " Julia Evans via GitGitGadget
2026-10-23 14:04 ` [PATCH v4 6/6] doc: git-pull: " Julia Evans via GitGitGadget
2026-10-23 14:18 ` [PATCH v4 0/6] [doc] Add new page on merge conflicts Ben Knoble
2026-10-23 16:00 ` Junio C Hamano
2026-10-23 16:06 ` Junio C Hamano
2026-10-23 16:18 ` Junio C Hamano
2026-10-26 12:39 ` [PATCH v5 " Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 1/6] doc: add new gitmergeconflicts man page Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 2/6] doc: git-merge: link to new merge conflicts guide Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 3/6] doc: git-rebase: " Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 4/6] doc: git-revert: " Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 5/6] doc: git-cherry-pick: " Julia Evans via GitGitGadget
2026-10-26 12:40 ` [PATCH v5 6/6] doc: git-pull: " Julia Evans via GitGitGadget
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=xmqqtsmc44c1.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=julia@jvns.ca \
--cc=peff@peff.net \
--cc=ps@pks.im \
/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