Only count remote-unreachable commits as local work in finish guard
ci / test (pull_request) Successful in 2m19s
ci / test (pull_request) Successful in 2m19s
Why: 本地 main 停在 origin/main 顶端(克隆默认态)在 pin 为 feature 顶端时不在 pin 历史内,--branches 直判仍会误阻(本 worktree 自身收尾实测踩到)。 Evidence: 第五例回归(本地默认分支+克隆 reflog 不阻)全绿;五例套件+全套治理回归 GOVERNANCE-SUITE-OK;worktree 实际 finish 通过即端到端自证。 Impact: local_work_outside 候选提交先过 --not --remotes 过滤(远端可达即已保全); stash 仍恒算本地独有。
This commit is contained in:
@@ -758,6 +758,23 @@ class FinishGuardFixTests(unittest.TestCase):
|
||||
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
|
||||
self.assertFalse(wt.exists())
|
||||
|
||||
|
||||
def test_local_default_branch_at_origin_main_does_not_block(self):
|
||||
"""克隆默认分支停在 origin/main 顶端(pin 为 feature 顶端时不在其历史内)
|
||||
且 HEAD reflog 含克隆/检出轨迹——均为远端有副本的状态,不得阻断 finish。"""
|
||||
self.add_submodule_pinned_off_main()
|
||||
wt = self.worktree()
|
||||
self.git(wt, "submodule", "update", "--init", "--recursive")
|
||||
(self.repo / "tracked").write_text("implementation done\n")
|
||||
self.git(self.repo, "add", "-A")
|
||||
self.git(self.repo, "commit", "-q", "-m", "done")
|
||||
self.git(self.repo, "push", "-q", "origin", "feature/guard")
|
||||
self.git(self.repo, "merge", "--no-ff", "-q", "-m", "Merge feature/guard", "feature/guard")
|
||||
self.git(self.repo, "push", "-q", "origin", "main")
|
||||
result = self.task(wt, "finish", check=False)
|
||||
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
|
||||
self.assertFalse(wt.exists())
|
||||
|
||||
def test_local_unique_commit_still_preserved(self):
|
||||
self.add_submodule_pinned_off_main()
|
||||
wt = self.worktree()
|
||||
|
||||
Reference in New Issue
Block a user