BlameCacheImpl: Don't store Repository reference in key

Storing the reference in the key means we need to remember to clear
it in all code paths. In this case there is only a single load code
path and we are clearing the reference, but in the case of something
like Gerrit's H2CacheImpl, we might unintentionally hold on to the
reference for too long. We now consider this an antipattern and
prefer using the non-LoadingCache interface so we don't accidentally
leak transient data in cache keys.

Change-Id: Ic661829d89e346a2d808ddfcf452a65db98c4552
1 file changed
tree: e31d2990b9eb87feaa4362dfe2260242d67f8b5c
  1. .buckconfig
  2. .gitignore
  3. .gitmodules
  4. .settings/
  5. BUCK
  6. COPYING
  7. Documentation/
  8. README.md
  9. VERSION
  10. bucklets.defs
  11. fake_pom_deploy.xml
  12. gitiles-dev/
  13. gitiles-servlet/
  14. gitiles-war/
  15. lib/
  16. tools/
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.

Building

Gitiles requires Buck to build.

  sudo apt-get install ant
  cd ${HOME}
  git clone https://github.com/facebook/buck.git
  cd buck
  ant
  sudo ln -s ${PWD}/bin/buck /usr/bin/buck
  cd /path/to/gitiles
  git submodule update --init
  buck build all

Testing

  cd /path/to/repositories  # Don't run from the gitiles repo.
  /path/to/gitiles/tools/run_dev.sh

This will recompile and start a development server. Open http://localhost:8080/ to view your local copy of gitiles, which will serve any repositories under /path/to/repositories.

Eclipse IDE

If you'd like to use Eclipse to edit Gitiles, first generate a project file:

  ./bucklets/tools/eclipse.py --src

Import the project in Eclipse:

  File -> Import -> Existing Projects into Workpace

The project only needs to be rebuilt if the source roots or third-party libraries have changed. For best results, ensure the project is closed in Eclipse before rebuilding.

Code Review

Gitiles uses Gerrit for code review: https://gerrit-review.googlesource.com/

Gitiles uses the “git push” workflow with server https://gerrit.googlesource.com/gitiles. You will need a generated cookie.

Gerrit depends on “Change-Id” annotations in your commit message. If you try to push a commit without one, it will explain how to install the proper git-hook:

curl -Lo `git rev-parse --git-dir`/hooks/commit-msg \
    https://gerrit-review.googlesource.com/tools/hooks/commit-msg
chmod +x `git rev-parse --git-dir`/hooks/commit-msg

Before you create your local commit (which you'll push to Gerrit) you will need to set your email to match your Gerrit account:

git config --local --add user.email foo@bar.com

Normally you will create code reviews by pushing for master:

git push origin HEAD:refs/for/master