New option for ls-user-refs: --only-refs-heads

Allows the admin to filter out refs not residing
in the refs/heads namespace.

Change-Id: I10339f7389a14b94e04d2d64926f17c5001a2206
diff --git a/Documentation/cmd-ls-user-refs.txt b/Documentation/cmd-ls-user-refs.txt
index 8188cdb..c0e072d 100644
--- a/Documentation/cmd-ls-user-refs.txt
+++ b/Documentation/cmd-ls-user-refs.txt
@@ -11,6 +11,7 @@
 'ssh' -p <port> <host> 'gerrit ls-user-ref'
   [--project PROJECT> | -p <PROJECT>]
   [--user <USER> | -u <USER>]
+  [--only-refs-heads]
 
 DESCRIPTION
 -----------
@@ -38,6 +39,9 @@
 	will query the database to find matching users, so the
 	full identity/name does not need to be specified.
 
+--only-refs-heads::
+	Only list the refs found under refs/heads/*
+
 EXAMPLES
 --------
 
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/LsUserRefs.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/LsUserRefs.java
index 4daf057..bacc629 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/LsUserRefs.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/LsUserRefs.java
@@ -17,6 +17,7 @@
 import com.google.gerrit.common.data.GlobalCapability;
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.account.AccountResolver;
@@ -62,6 +63,9 @@
       usage = "user for which the groups should be listed")
   private String userName;
 
+  @Option(name = "--only-refs-heads", usage = "list only refs under refs/heads")
+  private boolean onlyRefsHeads;
+
   @Inject
   private GitRepositoryManager repoManager;
 
@@ -96,9 +100,10 @@
               db, true).filter(repo.getAllRefs(), false);
 
       for (final String ref : refsMap.keySet()) {
-        stdout.println(ref);
+        if (!onlyRefsHeads || ref.startsWith(Branch.R_HEADS)) {
+          stdout.println(ref);
+        }
       }
-
     } catch (RepositoryNotFoundException e) {
       throw new UnloggedFailure("fatal: '"
           + projectControl.getProject().getNameKey() + "': not a git archive");