Discard cache-automerge/* refs early in VisibleRefFilter.

By discarding refs in refs/cache-automerge/ early in
VisibleRefFilter, we can make life easier for both
the TagMatcher and later RevWalks.

For typical large Git, with many refs and lots of cached merges,
we could cut the push time down significantly.

Change-Id: I1c1c1bda1944f42bc5a64c02114045e7bbd9bede
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java
index bc9d9f7..8d27c0e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java
@@ -74,7 +74,9 @@
     final List<Ref> deferredTags = new ArrayList<Ref>();
 
     for (Ref ref : refs.values()) {
-      if (PatchSet.isRef(ref.getName())) {
+      if (ref.getName().startsWith(GitRepositoryManager.REFS_CACHE_AUTOMERGE)) {
+        continue;
+      } else if (PatchSet.isRef(ref.getName())) {
         // Reference to a patch set is visible if the change is visible.
         //
         if (visibleChanges.contains(Change.Id.fromRef(ref.getName()))) {