Elaborate developer documentation

Change-Id: Ib389717863be0e7b2d5197c24533607ae82e4696
diff --git a/Documentation/developer-guide.md b/Documentation/developer-guide.md
index f0877c5..82fedb0 100644
--- a/Documentation/developer-guide.md
+++ b/Documentation/developer-guide.md
@@ -7,13 +7,50 @@
 Gitiles requires [Bazel](https://bazel.build/) to build.
 
 You need to use Java for building Gitiles. You can install Bazel from
-bazel.build: https://bazel.build/versions/master/docs/install.html
+bazel.build: https://bazel.build/versions/master/docs/install.html .
+Alternatively, you can use `apt-get`.
 
 ```
-  bazel build //:gitiles
-  bazel test //...
+$ sudo apt-get update
+$ sudo apt-get install bazel
 ```
 
+The best way to build and run gitiles is to use bazelisk.
+
+```
+$ go install github.com/bazelbuild/bazelisk@latest
+$ export PATH=$PATH:$(go env GOPATH)/bin
+```
+You are now ready to build and test.
+
+```
+$ bazelisk build //:gitiles
+$ bazelisk test //...
+```
+
+## Troubleshooting
+
+If you encounter build errors such as:
+
+```
+Error in execute: Argument 0 of execute is neither a path, label, nor string.
+```
+
+Make sure you are using python2. For debian users, the command
+is:
+
+```
+sudo apt-get install python-is-python2
+```
+
+Upon uploading your new CL, if you encounter a message related to a
+missing `Change-Id`, you are missing the commit hook. Likely the command
+to download it should appear in the Hint section of the message. If it
+does not, use the following command:
+
+```
+f=`git rev-parse --git-dir`/hooks/commit-msg ; mkdir -p $(dirname $f) ; curl -Lo $f https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x $f
+```
 
 ## Running Locally and Testing
 
@@ -28,6 +65,14 @@
 
 To run unit tests, refer to the aforementioned bazel test command.
 
+## Pushing your changes
+This repository does not work with `repo` tool. To push your CL to
+staging, use the following command.
+
+```
+git push origin HEAD:refs/for/master
+```
+
 
 ## Eclipse IDE