born() takes a HEAD as new only when it names a branch under refs/heads/ that no ref holds yet; a broken ref, a tag target or any other state is an error in Git's words. The branch name keeps every byte. Round 3 is fixed; round 4 waits until 0.1.3 ships. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
795 B
795 B
FAIL
- apps/ely-tree/src/git.rs:86 —
born()accepts an absent symbolic reference outsiderefs/heads/as an unborn branch, still hiding real Git errors (rule 2). Reproduction on native Windows and WSL Linux: initialize a repository, then rungit symbolic-ref HEAD refs/tags/missing.rev-parse --verify -q HEADexits 1,symbolic-ref -q HEADsucceeds, andfor-each-reffinds nothing;born()returnsOk(false)and both reflog and LFS returnOk([]), althoughgit reflog show HEAD --fails withfatal: bad revision 'HEAD'. Require the resolved symbolic target to be a branch underrefs/heads/before accepting it as unborn; otherwise surface Git's diagnostic, and add a regression for this case. Evidence:.work/G-03-r2/windows-probe.log,.work/G-03-r2/linux-probe.log.