diff options
author | Gustaf Lundh <gustaf.lundh@sonymobile.com> | 2013-01-30 14:41:58 +0100 |
---|---|---|
committer | Gustaf Lundh <gustaf.lundh@sonymobile.com> | 2013-02-04 13:41:39 +0100 |
commit | 146cd05beae036c2dd4371050000167d4de2e604 (patch) | |
tree | e0ea0f511b6e7dbce6de5c76bde0fde6f7165fd6 | |
parent | e0920c711d693ece5241d808bc060173fa92aec1 (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.java | 4 |
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()))) { |