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.
Show the branch a change follows, not the commit it points at
b6af0843a469496912df6f8be441676fd55b38d5 · Keenan Nemetz · 4d ago · parent b7afc6a9
Show the branch a change follows, not the commit it points at A request follows its head branch: every accepted push moves head: to the branch tip, so the short commit printed beside the branch repeated the same fact. The Head column now names the branch, and the commit appears only for a pinned request, which has no branch to speak for it.
server/integration_test.go +18
| @@ -2317,6 +2317,24 @@ func requestMeta(base, head, author string) string { | |||
| 2317 | 2317 | return requestFile(base, head, author, "") | |
| 2318 | 2318 | } | |
| 2319 | 2319 | ||
| 2320 | // requestFileFollowing renders an open request that follows a branch, for a | ||
| 2321 | // fixture that has to tell a followed head from a pinned one. | ||
| 2322 | func requestFileFollowing(title, base, head, headRef, author, body string) string { | ||
| 2323 | d := metadata.NewDoc() | ||
| 2324 | d.Text("title", title) | ||
| 2325 | d.Word("state", "open") | ||
| 2326 | d.Word("author", author) | ||
| 2327 | d.Word("base", base) | ||
| 2328 | d.Word("head", head) | ||
| 2329 | d.Word("head_ref", headRef) | ||
| 2330 | d.Word("created", "2026-10-22T22:00:00Z") | ||
| 2331 | out, err := d.Bytes(body) | ||
| 2332 | if err != nil { | ||
| 2333 | panic(err) | ||
| 2334 | } | ||
| 2335 | return string(out) | ||
| 2336 | } | ||
| 2337 | |||
| 2320 | 2338 | // requestFileMerged renders a request that already landed, for a fixture that | |
| 2321 | 2339 | // needs a merged change without running the landing flow. The merged head is the | |
| 2322 | 2340 | // same commit as the reviewed head, which is the fast-forward shape. | |