diff options
author | Shawn Pearce <sop@google.com> | 2013-11-26 20:30:05 -0800 |
---|---|---|
committer | Shawn Pearce <sop@google.com> | 2013-11-26 20:30:36 -0800 |
commit | 951371917f7af219c8ba22eba04a0ad4b6adbd33 (patch) | |
tree | 1383bcda3f68acb21aa092664f5c982ae8a2a73e /gerrit-server | |
parent | 10532abdff4f771fd2847da9509512a474217e67 (diff) | |
parent | a4a53664446b5f6a466b386773d89ff992093617 (diff) |
Merge branch 'stable-2.6' into stable-2.7
* stable-2.6:
Performance Fix: Minimize number of advertisedHaves
Change-Id: Id19a9ef22aa7445bf8188b79d34aeb870eadb988
Diffstat (limited to 'gerrit-server')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index 3e28b07d87..10e13741f4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -37,6 +37,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; import com.google.common.util.concurrent.CheckedFuture; @@ -119,6 +120,7 @@ import org.eclipse.jgit.transport.AdvertiseRefsHook; import org.eclipse.jgit.transport.AdvertiseRefsHookChain; import org.eclipse.jgit.transport.BaseReceivePack; import org.eclipse.jgit.transport.ReceiveCommand; +import org.eclipse.jgit.transport.RefFilter; import org.eclipse.jgit.transport.ReceiveCommand.Result; import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.UploadPack; @@ -376,6 +378,20 @@ public class ReceiveCommits { rp.setAllowDeletes(true); rp.setAllowNonFastForwards(true); rp.setCheckReceivedObjects(true); + rp.setRefFilter(new RefFilter() { + @Override + public Map<String, Ref> filter(Map<String, Ref> refs) { + Map<String, Ref> filteredRefs = Maps.newHashMapWithExpectedSize(refs.size()); + for (Map.Entry<String, Ref> e : refs.entrySet()) { + String name = e.getKey(); + if (!name.startsWith("refs/changes/") + && !name.startsWith(GitRepositoryManager.REFS_CACHE_AUTOMERGE)) { + filteredRefs.put(name, e.getValue()); + } + } + return filteredRefs; + } + }); if (!projectControl.allRefsAreVisible()) { rp.setCheckReferencedObjectsAreReachable(config.checkReferencedObjectsAreReachable); |