From: "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>
To: "Junio C Hamano" <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [rfc] flip rerere.enabled default to be "on" at Git 3.0 boundary?
Date: Tue, 21 Oct 2025 20:55:47 +0200 [thread overview]
Message-ID: <ecf21e8d-acff-47fb-b972-59cd7b8f3146@app.fastmail.com> (raw)
In-Reply-To: <xmqqldl4und1.fsf@gitster.g>
On Tue, Oct 21, 2025, at 20:21, Junio C Hamano wrote:
> A good default matters, and people who find out how useful a rerere
> database is would say "gee, that sounds great but why they do not
> enable it by default? It is too buggy and they wanted to reduce the
> number of support requests?" Yes, the reason it is not enabled by
> default initially was exactly that, i.e. those opt into the feature
> was used as guinea pigs to polish the feature. But we forgot to set
> the graduation criteria and never said "ok it is mature enough, so
> let's turn it on for everybody".
>
> Perhaps Git 3.0 boundary is a good occasion to do so?
This sounds nice.
Sometimes I make bad resolutions and my cache gets in the way. But I
know it’s a directory or file somewhere that I can delete manually. So
that’s nice. And if I didn’t know I think I could have found it on
StackOverflow.
I don’t think the “reused resolution” is super clear for things like
rebase and merge. I will get output like
CONFLICT
CONFLICT
CONFLICT
Reused recorded resolution for ...
Reused recorded resolution for ...
Reused recorded resolution for ...
YOUR STUFF IS CONFLICTED
DO THIS AND THAT
this is from memory :p
And the “reused” messages are kind of “randomly” placed in the stderr
stream of consciousness. Could they be colored maybe?
The biggest usability problem for me is when I have a cache, I want to
keep it, but I want to remove a few pathspecs. I’ve made some notes on
this to myself. Apparently I tried to `git rerere forget` on some paths
but I got not output. Then I did it again and it reused it. According
to my notes I had to get into that conflict resolution state and then
*forget*:
(this is straight from my notes, I didn’t try this right now)
1. I did the wrong thing for `file`
2. I reset the merge back
3. I did the merge
4. *While resolving conflicts*: `git rerere forget <file>`
5. `git merge --abort`
6. Do merge again
7. Now I can redo the merge conflict for `<file>` while keeping the rest
of the resolutions
I don’t know if all of that was necessary but that’s what I did to make
it work for me.
In short I guess I’m saying that git-rerere(1) isn’t that
straightforward if you want to figure out what is in the cache, if you
can delete things from it in your current state, things like that.
(Contrast with git-reflog(1) which is great to always have available;
copying hashes from the reflog to reset or something might be obtuse to
some people, but the reflog is never in the way, you can always look at
it, and you don’t have to worry about selectively deleting/pruning it.)
I’ve tried to read Junio’s old blog post about rerere pitfalls but I was
never able to understand it. (I’m not soliciting anyone to explain it to
me, just saying.)
For people with *my* biases towards rewriting history it sounds like a
good default. But I think for those users who make twenty merges in
either direction before they land their changes in the “main” branch it
probably won’t matter at all.
Just some thoughts. I won’t be able to follow up on this thread.
--
Kristoffer
Probably away until 28th October
next prev parent reply other threads:[~2025-10-21 18:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-21 18:21 [rfc] flip rerere.enabled default to be "on" at Git 3.0 boundary? Junio C Hamano
2025-10-21 18:55 ` Kristoffer Haugsbakk [this message]
2025-10-21 21:36 ` D. Ben Knoble
2025-10-21 21:37 ` D. Ben Knoble
2025-10-21 22:19 ` Junio C Hamano
2025-10-22 5:55 ` Johannes Sixt
2025-10-22 17:45 ` Ben Knoble
2025-10-22 18:54 ` Junio C Hamano
2025-10-23 19:19 ` D. Ben Knoble
2025-10-23 19:44 ` Junio C Hamano
2025-10-23 22:03 ` Ben Knoble
2025-10-21 19:45 ` Taylor Blau
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=ecf21e8d-acff-47fb-b972-59cd7b8f3146@app.fastmail.com \
--to=kristofferhaugsbakk@fastmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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).