private void selectMergeVariant() { switch (myInteraction.selectMergeVariant()) { case all: mergeAll(true); break; case showLatest: runInBackground( "Loading recent " + myMergeContext.getBranchName() + " revisions", new MergeCalculatorTask( this, null, task -> runInEdt(() -> selectRevisionsToMerge(task, false)))); break; case select: runInBackground( "Looking for branch origin", new LookForBranchOriginTask( this, false, copyPoint -> runInBackground( "Filtering " + myMergeContext.getBranchName() + " revisions", new MergeCalculatorTask( this, copyPoint, task -> runInEdt(() -> selectRevisionsToMerge(task, true)))))); case cancel: break; } }
private void checkReintegrateIsAllowedAndMergeAll( @Nullable WrapperInvertor copyPoint, boolean supportsMergeInfo) { boolean reintegrate = copyPoint != null && copyPoint.isInvertedSense(); if (!reintegrate || myInteraction.shouldReintegrate(copyPoint.inverted().getTarget())) { MergerFactory mergerFactory = createMergeAllFactory(reintegrate, copyPoint, supportsMergeInfo); String title = "Merging all from " + myMergeContext.getBranchName() + (reintegrate ? " (reintegrate)" : ""); merge(title, mergerFactory, null); } }
@NotNull private Task newIntegrateTask(@NotNull String title, @NotNull MergerFactory mergerFactory) { return new SvnIntegrateChangesTask( myMergeContext.getVcs(), new WorkingCopyInfo(myMergeContext.getWcInfo().getPath(), true), mergerFactory, parseUrl(myMergeContext.getSourceUrl()), title, false, myMergeContext.getBranchName()) { @Override public void onFinished() { super.onFinished(); mySemaphore.up(); } }; }
@NotNull private MergerFactory createMergeAllFactory( boolean reintegrate, @Nullable WrapperInvertor copyPoint, boolean supportsMergeInfo) { long revision = copyPoint != null ? reintegrate ? copyPoint.getWrapped().getTargetRevision() : copyPoint.getWrapped().getSourceRevision() : -1; return (vcs, target, handler, currentBranchUrl, branchName) -> new BranchMerger( vcs, currentBranchUrl, myMergeContext.getWcInfo().getPath(), handler, reintegrate, myMergeContext.getBranchName(), revision, supportsMergeInfo); }