Build blame cache as own java_library

This is a first step towards properly packaging of blame cache in Gerrit
server which is needed for [1]. [1] currently (PS-44) depends on the
whole gitiles-servlet and this leads to a:

  java.lang.NoClassDefFoundError: com/google/template/soy/SoyFileSet

caused by packaging the gitiles-servlet in the Gerrit core but without
all of its dependencies.


Change-Id: I9326b30962c21082b3d152eb6397ddcf767d1ce3
8 files changed
tree: ce29a21a54c75c85f801dabae7f9640136577ee5
  1. .buckconfig
  2. .gitignore
  3. .gitmodules
  4. .settings/
  5. BUCK
  7. Documentation/
  10. blame-cache/
  11. bucklets.defs
  12. fake_pom_deploy.xml
  13. gitiles-dev/
  14. gitiles-servlet/
  15. lib/
  16. tools/

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 requires Buck to build.

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


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

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.

To run unit tests, run buck test.

Eclipse IDE

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

./bucklets/tools/ --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 Style

Java code in Gitiles follows the [Google Java Style Guide] ( with a 100-column limit.

CSS in Gitiles follows the [SUIT CSS naming conventions] (

Code Review

Gitiles uses Gerrit for code review:

Gitiles uses the “git push” workflow with server 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 \
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

Normally you will create code reviews by pushing for master:

git push origin HEAD:refs/for/master