vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Give the CLI rerun too
70291860685b74018f96a47686e5e6160e11f14f · Keenan Nemetz · 6d ago · parent deb024d4
Give the CLI rerun too The run page offered Rerun while the CLI did not. It is the same maintainer action against the same instance-side queue: `vole run rerun <id>` queues a finished run again with the job it already pinned, refuses one that has not finished, and writes the same `run.rerun` audit record the page writes. Both transports now offer both run actions, which is what #168 asked of issues and comments applied to CI.
server/ssh/server.go +9−4
| @@ -454,14 +454,19 @@ func (s *Server) exec(ch xssh.Channel, req *xssh.Request, command, user, fp, rem | |||
| 454 | 454 | exit(ch, s.serveChangeStatus(ch, argv, user, remote)) | |
| 455 | 455 | return | |
| 456 | 456 | } | |
| 457 | // Canceling a run is a write to the repository's CI queue, not to a ref. The verb | ||
| 458 | // is the CLI counterpart of the browser's cancel button, and the handler asks the | ||
| 459 | // same maintainer capability before it touches the queue. | ||
| 457 | // Canceling and rerunning a run are writes to the repository's CI queue, not to a | ||
| 458 | // ref. The verbs are the CLI counterparts of the buttons on the run page, and the | ||
| 459 | // handlers ask the same maintainer capability before they touch the queue. | ||
| 460 | 460 | if len(argv) >= 1 && argv[0] == "vole-run-cancel" { | |
| 461 | 461 | req.Reply(true, nil) | |
| 462 | 462 | exit(ch, s.serveRunCancel(ch, argv, user)) | |
| 463 | 463 | return | |
| 464 | 464 | } | |
| 465 | if len(argv) >= 1 && argv[0] == "vole-run-rerun" { | ||
| 466 | req.Reply(true, nil) | ||
| 467 | exit(ch, s.serveRunRerun(ch, argv, user)) | ||
| 468 | return | ||
| 469 | } | ||
| 465 | 470 | // A manual workflow run is a write to the repository's CI queue, not to a ref. | |
| 466 | 471 | // The verb is the CLI counterpart of the browser's Run workflow form; the | |
| 467 | 472 | // dispatcher re-checks the maintainer capability before it queues anything. | |
| @@ -519,7 +524,7 @@ func (s *Server) exec(ch xssh.Channel, req *xssh.Request, command, user, fp, rem | |||
| 519 | 524 | return | |
| 520 | 525 | } | |
| 521 | 526 | if len(argv) != 2 { | |
| 522 | refuse("only git-upload-pack, git-receive-pack, vole-admin, vole-roster, vole-whoami, vole-runner, vole-change-merge, vole-change-status, vole-run-cancel and vole-workflow-dispatch are available") | ||
| 527 | refuse("only git-upload-pack, git-receive-pack, vole-admin, vole-roster, vole-whoami, vole-runner, vole-change-merge, vole-change-status, vole-run-cancel, vole-run-rerun and vole-workflow-dispatch are available") | ||
| 523 | 528 | return | |
| 524 | 529 | } | |
| 525 | 530 | verb := argv[0] | |