46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
---
|
|
name: land-branch-without-checkout
|
|
description: "Open a PR from a shared worktree when workspace policy blocks git checkout/restore: push a named branch ref from HEAD without switching branches."
|
|
---
|
|
|
|
# Landing a branch when `git checkout` is policy-blocked
|
|
|
|
Shared-workspace policy blocks `git checkout` and `git restore` (working-tree
|
|
switches could strand concurrent agents' uncommitted work). You still must ship
|
|
the commit on the current worktree branch as a named `chore|feat|fix/<issue>-<slug>`
|
|
branch. Never work around the block — go around it via refs.
|
|
|
|
## Sequence
|
|
|
|
```bash
|
|
# 1. commit only your files (atomic); leave other dirty paths alone
|
|
git add <your-files> && git commit -m "..."
|
|
|
|
# 2. branch ref at HEAD — no working-tree change, stays on wt/<...>
|
|
git branch <type>/<issue>-<slug> HEAD
|
|
git push origin <type>/<issue>-<slug> # pre-push hooks still run
|
|
|
|
# 3. PR via tracker API with head = pushed ref (see gitea-pr-api-cycle / gh)
|
|
```
|
|
|
|
- The worktree stays checked out on `wt/<timestamp>`; the new branch exists
|
|
only as the pushed ref (plus a local ref that merges cleanly later).
|
|
- `-u` upstream tracking on the wt branch is misleading — skip it; set
|
|
`git config branch.<name>.remote origin` + `.merge` only if you will
|
|
later check the branch out.
|
|
- Dirty regenerated fixtures left behind (e.g. `gen:sample` PDFs rewritten
|
|
by setup/gate runs): `git restore` is also blocked — do NOT edit-forward
|
|
to revert them; report them. They are regenerated on every bootstrap, so
|
|
dirt is expected and harmless.
|
|
|
|
## Verify
|
|
|
|
- `git ls-remote --heads origin <branch>` prints the same sha as `git rev-parse HEAD`.
|
|
- PR API returns 201 with `head.sha` equal to that sha.
|
|
|
|
## Do NOT
|
|
|
|
- `git checkout -b`, `git stash`, `git restore`, `git reset --hard` here —
|
|
all working-tree mutations the policy can block, and stashes in a shared
|
|
checkout are a cross-agent footgun.
|