Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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.

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.

client/remote.go +14−1

@@ -324,6 +324,19 @@ func MergeChange(gitDir, remote, id string) (string, error) {
324 324 // maintainer capability, records the audit line, and says which of the two happened.
325 325 // The id is the 26-character one the run page shows in its URL.
326 326 func CancelRun(gitDir, remote, runID string) (string, error) {
327 return runVerb(gitDir, remote, runID, "vole-run-cancel")
328 }
329
330 // RerunRun queues a finished run again with the same pinned job. Attempts keep their
331 // history; the run is a rerun of the job it already named, not a new row. The server
332 // checks the maintainer capability and records the audit line.
333 func RerunRun(gitDir, remote, runID string) (string, error) {
334 return runVerb(gitDir, remote, runID, "vole-run-rerun")
335 }
336
337 // runVerb resolves the instance and repository for one run-management verb and runs
338 // it. The caller has already decided which verb; this is only the wire.
339 func runVerb(gitDir, remote, runID, verb string) (string, error) {
327 340 runID = strings.ToUpper(strings.TrimSpace(runID))
328 341 if !voleid.Valid(runID) {
329 342 return "", fmt.Errorf("%q is not a run id; use the 26-character id from the run page", runID)
@@ -335,7 +348,7 @@ func CancelRun(gitDir, remote, runID string) (string, error) {
335 348 if RepoNameFromPath(path) == "" {
336 349 return "", fmt.Errorf("%s does not name a repository", remote)
337 350 }
338 out, err := RunSSH(host, port, "vole-run-cancel "+quoteSSHArg(path)+" "+quoteSSHArg(runID))
351 out, err := RunSSH(host, port, verb+" "+quoteSSHArg(path)+" "+quoteSSHArg(runID))
339 352 if err != nil {
340 353 return "", err
341 354 }