List of usage examples for org.eclipse.jgit.transport RefFilter RefFilter
RefFilter
From source file:com.google.gerrit.server.git.ReceiveCommits.java
License:Apache License
@Inject ReceiveCommits(final ReviewDb db, final Provider<InternalChangeQuery> queryProvider, final SchemaFactory<ReviewDb> schemaFactory, final ChangeData.Factory changeDataFactory, final ChangeUpdate.Factory updateFactory, final AccountResolver accountResolver, final CmdLineParser.Factory optionParserFactory, final MergedSender.Factory mergedSenderFactory, final ReplacePatchSetSender.Factory replacePatchSetFactory, final GitReferenceUpdated gitRefUpdated, final PatchSetInfoFactory patchSetInfoFactory, final ChangeHooks hooks, final ApprovalsUtil approvalsUtil, final ApprovalCopier approvalCopier, final ChangeMessagesUtil cmUtil, final ProjectCache projectCache, final GitRepositoryManager repoManager, final TagCache tagCache, final AccountCache accountCache, final ChangeCache changeCache, final ChangesCollection changes, final ChangeInserter.Factory changeInserterFactory, final CommitValidators.Factory commitValidatorsFactory, @CanonicalWebUrl final String canonicalWebUrl, final WorkQueue workQueue, @ChangeUpdateExecutor ListeningExecutorService changeUpdateExector, final RequestScopePropagator requestScopePropagator, final ChangeIndexer indexer, final SshInfo sshInfo, final AllProjectsName allProjectsName, ReceiveConfig config, @Assisted final ProjectControl projectControl, @Assisted final Repository repo, final Provider<SubmoduleOp> subOpProvider, final Provider<Submit> submitProvider, final Provider<MergeOp> mergeOpProvider, final ChangeKindCache changeKindCache, final DynamicMap<ProjectConfigEntry> pluginConfigEntries, final NotesMigration notesMigration, final ChangeEditUtil editUtil) throws IOException { this.currentUser = (IdentifiedUser) projectControl.getCurrentUser(); this.db = db; this.queryProvider = queryProvider; this.changeDataFactory = changeDataFactory; this.updateFactory = updateFactory; this.schemaFactory = schemaFactory; this.accountResolver = accountResolver; this.optionParserFactory = optionParserFactory; this.mergedSenderFactory = mergedSenderFactory; this.replacePatchSetFactory = replacePatchSetFactory; this.gitRefUpdated = gitRefUpdated; this.patchSetInfoFactory = patchSetInfoFactory; this.hooks = hooks; this.approvalsUtil = approvalsUtil; this.approvalCopier = approvalCopier; this.cmUtil = cmUtil; this.projectCache = projectCache; this.repoManager = repoManager; this.canonicalWebUrl = canonicalWebUrl; this.tagCache = tagCache; this.accountCache = accountCache; this.changes = changes; this.changeInserterFactory = changeInserterFactory; this.commitValidatorsFactory = commitValidatorsFactory; this.workQueue = workQueue; this.changeUpdateExector = changeUpdateExector; this.requestScopePropagator = requestScopePropagator; this.indexer = indexer; this.sshInfo = sshInfo; this.allProjectsName = allProjectsName; this.receiveConfig = config; this.changeKindCache = changeKindCache; this.projectControl = projectControl; this.labelTypes = projectControl.getLabelTypes(); this.project = projectControl.getProject(); this.repo = repo; this.rp = new ReceivePack(repo); this.rejectCommits = BanCommit.loadRejectCommitsMap(repo, rp.getRevWalk()); this.subOpProvider = subOpProvider; this.submitProvider = submitProvider; this.mergeOpProvider = mergeOpProvider; this.pluginConfigEntries = pluginConfigEntries; this.notesMigration = notesMigration; this.editUtil = editUtil; this.messageSender = new ReceivePackMessageSender(); ProjectState ps = projectControl.getProjectState(); this.newChangeForAllNotInTarget = ps.isCreateNewChangeForAllNotInTarget(); rp.setAllowCreates(true);/*from ww w.j a va2s .co m*/ rp.setAllowDeletes(true); rp.setAllowNonFastForwards(true); rp.setCheckReceivedObjects(ps.getConfig().getCheckReceivedObjects()); 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(RefNames.REFS_CACHE_AUTOMERGE)) { filteredRefs.put(name, e.getValue()); } } return filteredRefs; } }); if (!projectControl.allRefsAreVisible()) { rp.setCheckReferencedObjectsAreReachable(config.checkReferencedObjectsAreReachable); rp.setAdvertiseRefsHook(new VisibleRefFilter(tagCache, changeCache, repo, projectControl, db, false)); } List<AdvertiseRefsHook> advHooks = new ArrayList<>(3); advHooks.add(new AdvertiseRefsHook() { @Override public void advertiseRefs(BaseReceivePack rp) throws ServiceMayNotContinueException { allRefs = rp.getAdvertisedRefs(); if (allRefs == null) { try { allRefs = rp.getRepository().getRefDatabase().getRefs(ALL); } catch (ServiceMayNotContinueException e) { throw e; } catch (IOException e) { ServiceMayNotContinueException ex = new ServiceMayNotContinueException(); ex.initCause(e); throw ex; } } rp.setAdvertisedRefs(allRefs, rp.getAdvertisedObjects()); } @Override public void advertiseRefs(UploadPack uploadPack) { } }); advHooks.add(rp.getAdvertiseRefsHook()); advHooks.add( new ReceiveCommitsAdvertiseRefsHook(db, queryProvider, projectControl.getProject().getNameKey())); rp.setAdvertiseRefsHook(AdvertiseRefsHookChain.newChain(advHooks)); }