Thread (1 message) 1 message, 1 author, 2022-01-21

Re: [PATCH] checkout: fix BUG() case in 9081a421a6

From: Junio C Hamano <hidden>
Date: 2022-01-21 21:19:58

Ævar Arnfjörð Bjarmason [off-list ref] writes:
quoted
So, unless I hear more convincing arguments (and Todd's example or
anything similar that makes "git commit" from that state update a
ref outside local branches is *not*), I am hesitant to call the new
behaviour and 9081a421a6d a regression.
Well, the user is doing odd things with git, but we should reserve BUG()
for things that aren't rechable. Any time a user is able to arrange our
tooling in such a way as to call BUG() is a ... bug.
Yes, I concur.
quoted
What did the code before that BUG() do when faced with this nonsense
configuration?  If forbidding outright broke a sensible workflow
that happened to have been "working", I am OK to demote it to
warning() and restore the previous behaviour temporarily, whatever
it was (I think it was just old_branch_info.name was left unset
because we were not on local branch, but I don't know if the missing
.name was making any irrecoverable damage).  But the longer term
direction should be that we treat the "update HEAD ends up updating
some ref outside refs/heads/" a longstanding bug that needs to be
fixed.
The behavior with my patch here is exactly the same as before. I.e. it
was rather straightforward, the xstrdup() is new, but before we'd just
take the un-skipped string that didn't start with refs/heads/ as-is.
OK, that might have done a wrong thing (instead of dying) for a
strange settings like that, but the change was never about
tightening and detecting such a strangeness but only about plugging
leaks, so reverting that narrow part of the patch is the right thing
to do.
I agree that it's better to look at this more deeply, but given the rc2
being out, and this surely being something we want in the final I'd
think we'd want to keep this patch as-is.
Yes, except for the update in the test.  I do not think we want to
promise what should happen to the _values_ of these refs after the
operation at all.  If it only says "checkout should not exit with
non-zero status", I would be OK.  Promising anything more than that,
I do not think it is a good idea.

For now, I plan to do the "revert the check-and-BUG and nothing
else" change.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help