diff --git a/.mergify.yml b/.mergify.yml index 69f1455..6492e3a 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -2,8 +2,27 @@ extends: .github queue_rules: + - name: subtree + merge_method: merge + queue_conditions: + # Recognised from the commits themselves: both anchored git-subtree trailer + # lines must be present (ruling 9, SYS-1246). Same checks as default. + - "commits[*].commit_message ~= (?m)^git-subtree-dir: \\S+$" + - "commits[*].commit_message ~= (?m)^git-subtree-split: [0-9a-f]{40}$" + - check-success = no merge conflicts + - check-success = build · lint · typecheck · test / static checks (pnpm check:static) + - or: + - check-success = commitlint / lint PR commits + - check-skipped = commitlint / lint PR commits + merge_conditions: + - check-success = build · lint · typecheck · test / the gate (pnpm check:ci) + - name: default queue_conditions: + # Ruling 9 (SYS-1246): subtree PRs merge via the subtree queue above; a subtree + # claim without trailers matches no queue and cannot merge at all. + - "-commits[*].commit_message ~= (?m)^git-subtree-dir: \\S+$" + - "-title ~= (?i)\\b(add|pull|update|sync|vendor|refresh|import)\\b[^.]*\\bsubtrees?\\b|\\bsubtrees?\\b[^.]*(\\badd\\b|\\bpull\\b|\\bupdate\\b|\\bsync\\b|\\bvendor\\b|\\brefresh\\b|\\bimport\\b)" - check-success = no merge conflicts - check-success = build · lint · typecheck · test / static checks (pnpm check:static) - or: