vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Make change requests follow branches and allow base retargeting
e050e14a64f6f19c1b1478c4c073d690ef3d3129 · Keenan Nemetz · 13d ago · parent 59464445
Make change requests follow branches and allow base retargeting A request opened from a branch now follows it: post-receive moves the request's head to the new tip after an accepted push, so approvals and checks that named the old tip stop counting. Approvals stay bound to an exact base and commit; the approval writers now require the base and head the approver saw, so a push or retarget cannot silently approve a target nobody reviewed. Merged requests freeze the reviewed head. Add `vole change update --base` and a Change base control for stacked requests. A new base changes the diff and therefore invalidates approvals, which is what retargeting an upper request after its lower branch lands needs. Base names may now contain slashes. Also fix a second-boundary flake in the landing test.
docs/cli.md +7−2
| @@ -176,7 +176,7 @@ vole change show <id> | |||
| 176 | 176 | vole change comment <id> [-m <text> | -F <file>] [--path <file> --line <n> [--side new|old]] [--reply-to <comment-id>] | |
| 177 | 177 | vole change edit-comment <id> <comment-id> [-m <text> | -F <file>] | |
| 178 | 178 | vole change rm-comment <id> <comment-id> | |
| 179 | vole change update <id> [--head <rev>] [--closes <issue>]... [--no-closes] | ||
| 179 | vole change update <id> [--base <branch>] [--head <rev>] [--closes <issue>]... [--no-closes] | ||
| 180 | 180 | vole change approve <id> [--as <account>] | |
| 181 | 181 | vole change close <id> | |
| 182 | 182 | vole change reopen <id> | |
| @@ -186,7 +186,12 @@ vole change reopen <id> | |||
| 186 | 186 | approval is only accepted from the account it names. `--closes` takes a full | |
| 187 | 187 | issue id (repeatable, comma lists accepted) and names the issues landing the | |
| 188 | 188 | request closes; it replaces the list on `update`, and `--no-closes` clears it. | |
| 189 | See [Change requests](change-requests.md). | ||
| 189 | A request opened with `--head <branch>` follows that branch: a later push moves its | ||
| 190 | head and invalidates the old approvals and checks. `--head <commit>` (or a tag) | ||
| 191 | pins the request to that commit instead. `--base <branch>` on `update` retargets an | ||
| 192 | open request, which is how a stacked request moves onto `main` after the branch | ||
| 193 | below it lands; approvals named the old base and stop counting. See | ||
| 194 | [Change requests](change-requests.md). | ||
| 190 | 195 | ||
| 191 | 196 | ## Releases | |
| 192 | 197 | ||