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/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.

Store changes under changes/<ulid>/change.md

b492b557f5cc5633b3dcb21fdbb5e2ad98d0bc16 · Keenan Nemetz · 3d ago · parent 9bce3723

Store changes under changes/<ulid>/change.md

The web, the CLI, and the docs call these items changes; only the metadata
tree still said requests. Rename the directory and the record file so the
format and the product use one word.

The tree is a contract, so this is a format change rather than a display
change: the top-level layout stays closed, and a request path no longer
validates. An existing repository is migrated by rewriting its vole branch,
which is an audited admin force-push; the index rebuilds from the new tip
and the #N aliases keep their ULIDs because the rewrite preserves commit
order.

Refs #202 (01M6S3JC3Y2KA6EFJK6APX7A1T).

metadata/number_test.go +4−4

@@ -20,7 +20,7 @@ func TestRankAdditionsNumbersBothKinds(t *testing.T) {
20 20 t.Parallel()
21 21 n := RankAdditions([][]string{
22 22 {"issues/" + numIssueA + "/issue.md"},
23 {"requests/" + numRequestA + "/request.md"},
23 {"changes/" + numRequestA + "/change.md"},
24 24 {"issues/" + numIssueB + "/issue.md"},
25 25 })
26 26 for want, id := range map[int]string{1: numIssueA, 2: numRequestA, 3: numIssueB} {
@@ -46,7 +46,7 @@ func TestRankAdditionsNumbersBothKinds(t *testing.T) {
46 46 func TestRankAdditionsOrdersABatchByULID(t *testing.T) {
47 47 t.Parallel()
48 48 batch := []string{
49 "requests/" + numRequestB + "/request.md",
49 "changes/" + numRequestB + "/change.md",
50 50 "issues/" + numIssueC + "/issue.md",
51 51 "issues/" + numIssueA + "/issue.md",
52 52 }
@@ -67,7 +67,7 @@ func TestRankAdditionsIgnoresNonCreationPaths(t *testing.T) {
67 67 {"issues/" + numIssueA + "/issue.md"},
68 68 {
69 69 "issues/" + numIssueA + "/comments/" + numIssueB + ".md",
70 "requests/" + numRequestA + "/approvals/keenan.md",
70 "changes/" + numRequestA + "/approvals/keenan.md",
71 71 "runs/" + numIssueC + "/1/record.md",
72 72 },
73 73 {"issues/" + numIssueA + "/issue.md"}, // an edit is not an addition, but a bug would look like one
@@ -184,7 +184,7 @@ func TestLoadNumbersFollowsHistory(t *testing.T) {
184 184
185 185 // Deleting the middle entity leaves its number spent.
186 186 if _, err := git.CommitFiles(g, Ref, func(files map[string][]byte) error {
187 delete(files, "requests/"+req.ID+"/request.md")
187 delete(files, "changes/"+req.ID+"/change.md")
188 188 return nil
189 189 }, "delete a request", "keenan"); err != nil {
190 190 t.Fatal(err)