diff --git a/doc/3-faq-tips-etc.mkd b/doc/3-faq-tips-etc.mkd
index 25a83ff..4b0a473 100644
--- a/doc/3-faq-tips-etc.mkd
+++ b/doc/3-faq-tips-etc.mkd
@@ -27,6 +27,7 @@ In this document:
* support for git installed outside default PATH
* "personal" branches
* custom hooks and custom git config
+ * bypassing gitolite
* INconvenience features
* deleting a repo
* helping with gitweb
@@ -558,6 +559,29 @@ You can specify hooks that you want to propagate to all repos, as well as
per-repo "gitconfig" settings. Please see `doc/2-admin.mkd` and
`conf/example.conf` for details.
+
+
+##### bypassing gitolite
+
+Sometimes you'll need to access one of the gitolite-managed repos directly on
+the server, without going through gitolite. Reasons may be some automatic
+updates or some other ad hoc purposes you can dream up.
+
+Cloning a gitolite-controlled repo is easy enough -- just use the full path
+(typically `~/repositories/reponame.git`) instead of just `reponame`, to
+compensate for gitolite not sitting in between and adding those things to the
+repo path.
+
+But when you push, the update hook (which git will invoke anyway) will fail
+because it needs all sorts of access control info that it now doesn't have,
+because the push was invoked without going through gitolite.
+
+In order to bypass the update hook, just set the `GL_BYPASS_UPDATE_HOOK`
+environment variable to "1" or something, export it, and push. I prefer not
+to set that variable permanently, preferring this mode instead:
+
+ GL_BYPASS_UPDATE_HOOK=1 git push
+
#### INconvenience features