예제 #1
0
  @CalledInAny
  public void end(@NotNull String message, boolean isError) {
    LOG.info((isError ? "Error: " : "Info: ") + message);

    clear();
    getApplication().invokeLater(() -> myInteraction.showErrors(message, isError));
  }
예제 #2
0
 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;
   }
 }
예제 #3
0
  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);
    }
  }
예제 #4
0
  private void selectRevisionsToMerge(
      @NotNull MergeCalculatorTask task, boolean allStatusesCalculated) {
    SelectMergeItemsResult result =
        myInteraction.selectMergeItems(
            task.getChangeLists(),
            task.getMergeChecker(),
            allStatusesCalculated,
            task.areAllListsLoaded());

    switch (result.getResultCode()) {
      case all:
        mergeAll(true);
        break;
      case select:
      case showLatest:
        merge(result.getSelectedLists());
        break;
      case cancel:
        break;
    }
  }
예제 #5
0
  @CalledInAwt
  public void execute() {
    FileDocumentManager.getInstance().saveAllDocuments();

    mySemaphore.down();
    runInEdt(
        () -> {
          if (areInSameHierarchy(
              createUrl(myMergeContext.getSourceUrl()), myMergeContext.getWcInfo().getUrl())) {
            end("Cannot merge from self", true);
          } else if (!hasSwitchedRoots() || myInteraction.shouldContinueSwitchedRootFound()) {
            runInBackground(
                "Checking repository capabilities",
                indicator -> {
                  if (supportsMergeInfo()) {
                    runInEdt(this::selectMergeVariant);
                  } else {
                    mergeAll(false);
                  }
                });
          }
        });
  }
예제 #6
0
 @Override
 public void showErrors() {
   if (!myExceptions.isEmpty()) {
     myInteraction.showErrors(myMergeContext.getTitle(), myExceptions);
   }
 }