whole-tree
A deny rule by default: it refuses a whole-tree VCS reset, checkout, restore or clean, which cannot be undone, and names what to run instead.
What it catches
A whole-tree VCS reset, checkout, restore or clean, which cannot be undone.
Why
These destroy uncommitted and untracked work across the WHOLE tree, including a concurrent session's, and nothing recorded anywhere can give it back. It is the one category where an over-eager refusal is the safe direction, which is why an unparsable line falls back to the pattern rather than passing. Verify in place instead: no magus run needs a clean tree. git's own help passes, because git documents that it prints usage without running: git stash --help, git reset -h, git help stash. It has to be the whole line, with nothing between the verb and the flag, so git reset --hard --help, git -c ... stash --help, a VAR=value prefix, sh -c or a pipe are judged as work.
Default and override
By default this rule takes the decision deny. A workspace sets it by name, in its root
magusfile, to deny, advise or off:
magus\guard.builtins({"whole-tree": "advise"})
A loosening takes effect once it is committed; a tightening applies at once.
Seeing it
A verdict names its rule in brackets, which is how you got here:
deny [whole-tree]: ...
magus describe rule whole-tree prints the same entry at a terminal, and
magus describe rules lists every rule this workspace enforces.
See also
- All rules - what this workspace enforces, deny first
- The guard - how a verdict is reached and wired
- Setting a built-in rule - how a workspace changes this default