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.

Read one request, or one commit, instead of resolving twice

c9202f7f0ba5904af798e7f55bb91079aa774bf5 · Keenan Nemetz · 10d ago · parent 73ec800b

Read one request, or one commit, instead of resolving twice

The index and the change page both paid for reads they did not need:

- GetRequest read every request on the branch to return one. It now reads
  that request's files.
- The index resolves the metadata commit once and then handed the ref to
  loaders that resolved it again. LoadIssuesAt, LoadNumbersAt and
  LoadRequestAt take the commit they were given.
- Release artifacts get a batched loader: one tree listing and one
  cat-file for the whole set, instead of one process per file per tag.

These are the loaders the index needs to derive its rows from one commit
at a time.

metadata/number.go +6

@@ -68,6 +68,12 @@ func LoadNumbers(g *git.Repo, ref string) (*Numbers, error) {
68 68 if err != nil {
69 69 return nil, err
70 70 }
71 return LoadNumbersAt(g, commit)
72 }
73
74 // LoadNumbersAt numbers the entities a commit's history added. It takes the
75 // commit rather than a ref so the index can resolve the metadata branch once.
76 func LoadNumbersAt(g *git.Repo, commit string) (*Numbers, error) {
71 77 if commit == "" {
72 78 return newNumbers(), nil
73 79 }