You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closing #471 took a deliberate trade under principle 1: Git::unpushed_commits asks log --oneline --all --not --remotes, and --all spans refs/tags, so a tag the remote carries that no remote branch reaches reads as unpushed forever. The direction is towards keeping, which is why it was taken.
Question
Nothing in the tree creates a tag, so no test fails if someone narrows that question back. A later tidy-the-report change to --branches or --no-tags would silently reverse a principle-1 decision and every check would stay green. This repo pins argv order elsewhere for exactly this reason.
Two facts the #474 review measured that sharpen it:
Through devlaunch's real clone topology the false positive is stronger than the doc says. The bare cache keeps refs/tags/v1 after upstream deletes both the branch and the tag (Confirm the bare object stores are bounded #453's tag monotonicity), the workspace clone inherits the tag while refs/remotes/* gets pruned, so every clone of that repo made afterwards reports 1 unpushed commit permanently.
The same widening reaches refs/notes/commits (a permanent false positive in any git-notes clone) and refs/bisect/*. rust/devlaunch-core/src/clients/git.rs:501 names neither.
Work
A test that fails if the question narrows: a clone whose only unpushed-looking thing is a tag, asserting the guard reports it rather than NothingToLose. Red first, by narrowing the argv and watching it fail. Name notes and bisect in the doc comment while you are there.
Out of scope: changing the trade. Principle 1 decided it and #471 recorded the reasoning; this ticket only stops it being reversed by accident.
Closing #471 took a deliberate trade under principle 1:
Git::unpushed_commitsaskslog --oneline --all --not --remotes, and--allspansrefs/tags, so a tag the remote carries that no remote branch reaches reads as unpushed forever. The direction is towards keeping, which is why it was taken.Question
Nothing in the tree creates a tag, so no test fails if someone narrows that question back. A later tidy-the-report change to
--branchesor--no-tagswould silently reverse a principle-1 decision and every check would stay green. This repo pins argv order elsewhere for exactly this reason.Two facts the #474 review measured that sharpen it:
refs/tags/v1after upstream deletes both the branch and the tag (Confirm the bare object stores are bounded #453's tag monotonicity), the workspace clone inherits the tag whilerefs/remotes/*gets pruned, so every clone of that repo made afterwards reports 1 unpushed commit permanently.refs/notes/commits(a permanent false positive in any git-notes clone) andrefs/bisect/*.rust/devlaunch-core/src/clients/git.rs:501names neither.Work
A test that fails if the question narrows: a clone whose only unpushed-looking thing is a tag, asserting the guard reports it rather than
NothingToLose. Red first, by narrowing the argv and watching it fail. Name notes and bisect in the doc comment while you are there.Out of scope: changing the trade. Principle 1 decided it and #471 recorded the reasoning; this ticket only stops it being reversed by accident.