documentation: Update access control for new ref syntaxes
We now support ${username} variables and regular expressions,
so try to document their use a bit.
Change-Id: I3c42fd59b00094eee745de827055794823021618
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt
index 66b4082..b45853d 100644
--- a/Documentation/access-control.txt
+++ b/Documentation/access-control.txt
@@ -135,10 +135,22 @@
Permissions can be set on a single reference name to match one
branch (e.g. `refs/heads/master`), or on a reference namespace
-(e.g. `refs/heads/*`) to match any branch starting with that
-prefix. So a permission with `refs/heads/*` will match
+(e.g. `refs/heads/\*`) to match any branch starting with that
+prefix. So a permission with `refs/heads/\*` will match
`refs/heads/master` and `refs/heads/experimental`, etc.
+Reference names can also be described with a regular expression
+by prefixing the reference name with `\^`. For example
+`\^refs/heads/[a-z]\{1,8\}` matches all lower case branch names
+between 1 and 8 characters long. Within a regular expression `.`
+is a wildcard matching any character, but may be escaped as `\.`.
+
+References can have the current user name automatically included,
+creating dynamic access controls that change to match the currently
+logged in user. For example to provide a personal sandbox space
+to all developers, `refs/heads/sandbox/$\{username\}/*` allowing
+the user 'joe' to use 'refs/heads/sandbox/joe/foo'.
+
When evaluating a reference-level access right, Gerrit will use
the full set of access rights to determine if the user
is allowed to perform a given action. For example, if a user is a