summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustaf Lundh <gustaf.lundh@sonymobile.com>2013-01-30 14:41:58 +0100
committerGustaf Lundh <gustaf.lundh@sonymobile.com>2013-02-04 13:41:39 +0100
commit146cd05beae036c2dd4371050000167d4de2e604 (patch)
treee0ea0f511b6e7dbce6de5c76bde0fde6f7165fd6
parente0920c711d693ece5241d808bc060173fa92aec1 (diff)
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
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java4
1 files changed, 3 insertions, 1 deletions
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 bc9d9f7216..8d27c0e4cb 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 @@ public class VisibleRefFilter extends AbstractAdvertiseRefsHook {
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()))) {