finish: refuse closes= and close_linked on an issue with an open dependency #821
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#821
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
madt_finish closes="N"andclose_linked=truewrite aCloses #Nline with no dependency check. When #N still depends on an open issue, the forge merges the PR, answers 200, and drops the close with no error. madtea then reports a clean merge, so the caller believes #N is closed while it stays open. The close-semantics probe ininternal/testforge/closeprobeshows this on Forgejo and Gitea, at the baseline and latest pins.The branch issue already gets the check: with an open dependency, finish writes
Refs #Ninstead. The explicit paths skip it.Decision: finish refuses before it merges when an issue in
closes=, or a branch issue underclose_linked=true, has an open dependency. The refusal names the issue and each open blocker, and says to finish the blocker first or drop the issue from the close list. No flag turns the refusal off.close_linkedstays. When the forge API is out of reach (ssh-only mode), the dependency check cannot run, andcloses=andclose_linkedkeep their current behavior there.Acceptance, against throwaway Forgejo and Gitea servers:
closes=naming an issue with an open dependency refuses before any push, PR, or merge, and names the blocker.close_linked=trueon a branch issue with an open dependency refuses the same way.closes=andclose_linked=trueon an issue with no open dependency still close it at merge.The design in this issue is replaced by #879:
finishtakes no close inputs, and refuses before the forge when the work cannot close. This issue stays open as context until #879 lands.