From: Junio C Hamano <gitster@pobox.com>
To: Matthias Beyer <mail@beyermatthias.de>
Cc: git@vger.kernel.org
Subject: Re: cherry-pick with --no-rerere-autoupdate does still rerere?
Date: Sat, 02 Jul 2022 12:04:17 -0700 [thread overview]
Message-ID: <xmqqwncv49qm.fsf@gitster.g> (raw)
In-Reply-To: <1656746869.11nc2qu6dn.astroid@takeshi.none> (Matthias Beyer's message of "Sat, 02 Jul 2022 09:30:18 +0200")
Matthias Beyer <mail@beyermatthias.de> writes:
> I just experienced a `git cherry-pick <commit> --no-rerere-autoupdate` where the
> conflict still got automatically resolved from rerere.
If I am not mistaken, this is totally expected. You told the
command "use rerere but do not blindly accept the replayed
resolution into the index".
When you run "cherry-pick" there are three possible outcomes:
* The change <commit> wanted to make cleanly replays on top of
HEAD. Unless --no-commit is given, we update the index and the
working tree, make a commit, and advance HEAD to point at the new
commit.
* The change does not cleanly replay, and you either do not have an
earlier resolution recorded in the rerere database, or you tell
rerere not to kick in by setting the rerere.enabled configuration
variable to 'false'. In this case, the working tree files would
have conflict markers in them and the index would have higher
stages for these conflicted paths to record the original, our,
and their versions.
* The change does not cleanly replay, but your rerere database
knows a resolution you accepted already that applies cleanly, and
you allow rerere to kick in by the rerere.enabled configuration
variable. This will update the working tree files by replaying
the recorded resolution, but leaves the index conflicted, so that
you can inspect the auto-resolution with "git diff --cc".
If rerere is allowed to update the index with the result of its
operation (either by the rerere.autoupdate configuration or the
--rerere-autoupdate command line option), it also adds the result
to the index ("git diff --cc" would no longer work as a way to
view how the conflict was resolved).
I think the default these days is to allow rerere to replay the
resolution to the working tree files, but not allow the index to be
auto-updated. This allows people to be lazy but still be careful
before (re)committing to accept the previous resolution to the
index.
The above is not limited to "git cherry-pick", but applies also to
any mergy operation like "git merge", "git revert", and "git am -3".
A bonus protip. Always write dashed options to a subcommand (like
"cherry-pick") before non-option argument, i.e.
git cherry-pick --[no-]rerere-autoupdate <commit>
Some subcommands may be lenient and take arguments given in a wrong
order when they are not ambiguous, but it is a good discipline to
follow.
next prev parent reply other threads:[~2022-07-02 19:04 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-02 7:30 cherry-pick with --no-rerere-autoupdate does still rerere? Matthias Beyer
2022-07-02 19:04 ` Junio C Hamano [this message]
2022-07-03 7:08 ` Matthias Beyer
2022-07-05 17:49 ` Junio C Hamano
2022-07-12 14:04 ` [PATCH] Add note that conflict resolution is still performed Matthias Beyer
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=xmqqwncv49qm.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=mail@beyermatthias.de \
/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).