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.
Drop the legacy run-record import
59badc638dde0655b11d01eebfe3a457735d2501 · Keenan Nemetz · 11d ago · parent b312e166
Drop the legacy run-record import There is no released instance to stay compatible with, so the file format under runs/, the branch importer, and the pre-receive allowance for that directory are gone. The Record value is now only the finish wire format and the shape stored in run_attempts. metadata.ValidateIssues rejects runs/ like any other unknown directory, and vole admin index rebuild no longer reads run history from Git. An existing instance migrates once with the previous build, then rewrites the vole branch to remove the old records. Nothing in this build reads them.
metadata/issues.go +2−13
| @@ -44,10 +44,6 @@ const ( | |||
| 44 | 44 | IssuesDir = "issues" | |
| 45 | 45 | // RequestsDir is the change-request subtree. | |
| 46 | 46 | RequestsDir = "requests" | |
| 47 | // RunsDir is the legacy run-record subtree. New results live in data/runs.db; | ||
| 48 | // this directory stays accepted on an old branch so a clone or a cleanup push | ||
| 49 | // still validates. | ||
| 50 | RunsDir = "runs" | ||
| 51 | 47 | // ReleasesDir is the release-artifact subtree. | |
| 52 | 48 | ReleasesDir = "releases" | |
| 53 | 49 | ||
| @@ -458,17 +454,10 @@ func ValidateIssues(g *git.Repo, commit string) []string { | |||
| 458 | 454 | // Release artifacts: their own validator runs below, and they are not | |
| 459 | 455 | // part of the entity set this function parses. | |
| 460 | 456 | continue | |
| 461 | case strings.HasPrefix(e.Name, RunsDir+"/"): | ||
| 462 | // Run records: machine-written. The server validates each one as it | ||
| 463 | // writes it, and no client can push here (pre-receive refuses the | ||
| 464 | // prefix), so there is nothing at the boundary to check — and reading | ||
| 465 | // every record blob on every push would make an issue edit cost a walk | ||
| 466 | // over the whole CI history. | ||
| 467 | continue | ||
| 468 | 457 | default: | |
| 469 | 458 | problems = append(problems, fmt.Sprintf( | |
| 470 | "%s: metadata may only contain %s/, %s/, %s/ and %s/", | ||
| 471 | e.Name, IssuesDir, RequestsDir, ReleasesDir, RunsDir)) | ||
| 459 | "%s: metadata may only contain %s/, %s/ and %s/", | ||
| 460 | e.Name, IssuesDir, RequestsDir, ReleasesDir)) | ||
| 472 | 461 | continue | |
| 473 | 462 | } | |
| 474 | 463 | data, err := g.BlobBySHA(e.SHA) | |