Re: [PATCH v3 4/7] sequencer: treat error reading HEAD as unborn branch
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 11, 2024, 16:54 UTC
- Message-ID
- <xmqqh6hcu2tg.fsf@gitster.g>
- In-Reply-To
- <xmqq4jddwrzr.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 6 quoted lines
> It is not a good code hygiene to assume that a failure to read HEAD > always means we are on an unborn branch, even if that is the most > likely cause of the failure. We may instead want to positively > determine that we are on an unborn state, by seeing if the HEAD is a > symbolic ref that points at a ref in refs/heads/* hierarchy, and > that ref does not exist.
I suspect that you are almost there.
+ if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL)) { + /* + * Treat an error reading HEAD as an unborn branch. + */
After we see this error, if we make a call to resolve_ref_unsafe() with RESOLVE_REF_NO_RECURSE, the call should return the branch that we are on but is not yet born, and &oid will get the null_oid. I am not sure if there is a way to combine the two calls into one, but because the failure case (i.e. doing anything on an unborn branch) is a rare case that happens only once before actually giving birth to a new branch, it probably is not worth spending extra brain cycles on it and just use a simple and stupid "when resolving fails, see if we are in a rare salvageable case with extra code" approach.