Avoid scanning every ref to render the commit log

The commit log page shows, next to each commit, the branches and tags
that point at it. Computing those labels loaded and peeled every
reference in the repository on each page load. On repositories with very
large reference counts, such as those backing a code review system where
every change adds several references, this work dominated the request
and pushed memory use into the gigabytes and response times past a
minute.

Only branches and tags are ever displayed, so the lookup now examines
just those two namespaces rather than the whole set of references, which
is far smaller and does not grow with review activity. A reference that
cannot be resolved is skipped instead of failing the entire page,
preserving the previous tolerance for damaged repositories.

Change-Id: I4673f8821542b8ddb642257b20dc997c4e9ff6a7
2 files changed
tree: 3c4d068c817206aa84de3bab9f5eb7e7456cd5f8
  1. .settings/
  2. Documentation/
  3. java/
  4. javatests/
  5. lib/
  6. modules/
  7. resources/
  8. tools/
  9. .bazelignore
  10. .bazelrc
  11. .bazelversion
  12. .gitignore
  13. .gitmodules
  14. .mailmap
  15. .zuul.yaml
  16. BUILD
  17. COPYING
  18. external_deps.lock.json
  19. fake_pom_deploy.xml
  20. MODULE.bazel
  21. MODULE.bazel.lock
  22. navbar.md
  23. README.md
  24. version.bzl
README.md

Gitiles - A simple JGit repository browser

Gitiles is a simple repository browser for Git repositories, built on JGit. Its guiding principle is simplicity: it has no formal access controls, no write access, no fancy Javascript, etc.

Gitiles automatically renders *.md Markdown files into HTML for simplified documentation. Refer to the Markdown documentation for details.

Configuration

Gitiles is configurable in a git-style configuration file named gitiles.config. Refer to the configuration documentation for details.

Bugs

Use gerrit's issue tracker to file bugs.

Contributing to Gitiles

Please refer to the Developer Guide.