From f8b51e19060194990f2a8a0f8c72aac03465f2ef Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sun, 23 Jun 2019 15:36:17 +0100 Subject: [PATCH] git: simplify method signature: throw an exception instead of collecting it in a list GitOrigin-RevId: ba3698bb2418d47904d872ffa6d31b234d8d151b --- .../src/git4idea/actions/GitMergeAction.java | 41 ++++++++++--------- .../git4idea/merge/MergeChangeCollector.java | 34 +++++++-------- .../src/git4idea/push/GitPushOperation.java | 10 ++--- .../src/git4idea/update/GitUpdater.java | 14 +++---- 4 files changed, 47 insertions(+), 52 deletions(-) diff --git a/plugins/git4idea/src/git4idea/actions/GitMergeAction.java b/plugins/git4idea/src/git4idea/actions/GitMergeAction.java index 74a8ba39de6d..c1594f1436e1 100644 --- a/plugins/git4idea/src/git4idea/actions/GitMergeAction.java +++ b/plugins/git4idea/src/git4idea/actions/GitMergeAction.java @@ -26,7 +26,10 @@ import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.GuiUtils; import com.intellij.vcs.ViewUpdateInfoNotification; -import git4idea.*; +import git4idea.GitBranch; +import git4idea.GitRevisionNumber; +import git4idea.GitUtil; +import git4idea.GitVcs; import git4idea.branch.GitBranchPair; import git4idea.commands.*; import git4idea.merge.GitConflictResolver; @@ -43,7 +46,6 @@ import git4idea.util.LocalChangesWouldBeOverwrittenHelper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.List; import static com.intellij.notification.NotificationType.INFORMATION; @@ -164,9 +166,7 @@ abstract class GitMergeAction extends GitRepositoryAction { }).buildAndShowNotification(); } else { - List exceptions = new ArrayList<>(); - showUpdates(project, exceptions, root, currentRev, beforeLabel, getActionName()); - GitVcs.getInstance(project).showErrors(exceptions, getActionName()); + showUpdates(project, root, currentRev, beforeLabel, getActionName()); } } else if (localChangesDetector.wasMessageDetected()) { @@ -184,24 +184,27 @@ abstract class GitMergeAction extends GitRepositoryAction { } private static void showUpdates(@NotNull Project project, - @NotNull List exceptions, @NotNull VirtualFile root, @NotNull GitRevisionNumber currentRev, @NotNull Label beforeLabel, @NotNull String actionName) { - UpdatedFiles files = UpdatedFiles.create(); - MergeChangeCollector collector = new MergeChangeCollector(project, root, currentRev); - collector.collect(files, exceptions); - if (!exceptions.isEmpty()) return; + try { + UpdatedFiles files = UpdatedFiles.create(); + MergeChangeCollector collector = new MergeChangeCollector(project, root, currentRev); + collector.collect(files); - GuiUtils.invokeLaterIfNeeded(() -> { - ProjectLevelVcsManagerEx manager = (ProjectLevelVcsManagerEx)ProjectLevelVcsManager.getInstance(project); - UpdateInfoTree tree = manager.showUpdateProjectInfo(files, actionName, ActionInfo.UPDATE, false); - if (tree != null) { - tree.setBefore(beforeLabel); - tree.setAfter(LocalHistory.getInstance().putSystemLabel(project, "After update")); - ViewUpdateInfoNotification.focusUpdateInfoTree(project, tree); - } - }, ModalityState.defaultModalityState()); + GuiUtils.invokeLaterIfNeeded(() -> { + ProjectLevelVcsManagerEx manager = (ProjectLevelVcsManagerEx)ProjectLevelVcsManager.getInstance(project); + UpdateInfoTree tree = manager.showUpdateProjectInfo(files, actionName, ActionInfo.UPDATE, false); + if (tree != null) { + tree.setBefore(beforeLabel); + tree.setAfter(LocalHistory.getInstance().putSystemLabel(project, "After update")); + ViewUpdateInfoNotification.focusUpdateInfoTree(project, tree); + } + }, ModalityState.defaultModalityState()); + } + catch (VcsException e) { + GitVcs.getInstance(project).showErrors(singletonList(e), actionName); + } } } diff --git a/plugins/git4idea/src/git4idea/merge/MergeChangeCollector.java b/plugins/git4idea/src/git4idea/merge/MergeChangeCollector.java index 5db78ca42877..c1f30453d760 100644 --- a/plugins/git4idea/src/git4idea/merge/MergeChangeCollector.java +++ b/plugins/git4idea/src/git4idea/merge/MergeChangeCollector.java @@ -60,28 +60,24 @@ public class MergeChangeCollector { /** * Collects changed files during or after merge operation to the supplied container. */ - public void collect(@NotNull UpdatedFiles updatedFiles, List exceptions) { - try { - // collect unmerged - Set paths = getUnmergedPaths(); - addAll(updatedFiles, FileGroup.MERGED_WITH_CONFLICT_ID, paths); + public void collect(@NotNull UpdatedFiles updatedFiles) throws VcsException { + // collect unmerged + Set paths = getUnmergedPaths(); + addAll(updatedFiles, FileGroup.MERGED_WITH_CONFLICT_ID, paths); - // collect other changes (ignoring unmerged) - TreeSet updated = new TreeSet<>(); - TreeSet created = new TreeSet<>(); - TreeSet removed = new TreeSet<>(); + // collect other changes (ignoring unmerged) + TreeSet updated = new TreeSet<>(); + TreeSet created = new TreeSet<>(); + TreeSet removed = new TreeSet<>(); - String revisionsForDiff = getRevisionsForDiff(); - if (revisionsForDiff == null) { - return; - } - getChangedFilesExceptUnmerged(updated, created, removed, revisionsForDiff); - addAll(updatedFiles, FileGroup.UPDATED_ID, updated); - addAll(updatedFiles, FileGroup.CREATED_ID, created); - addAll(updatedFiles, FileGroup.REMOVED_FROM_REPOSITORY_ID, removed); - } catch (VcsException e) { - exceptions.add(e); + String revisionsForDiff = getRevisionsForDiff(); + if (revisionsForDiff == null) { + return; } + getChangedFilesExceptUnmerged(updated, created, removed, revisionsForDiff); + addAll(updatedFiles, FileGroup.UPDATED_ID, updated); + addAll(updatedFiles, FileGroup.CREATED_ID, created); + addAll(updatedFiles, FileGroup.REMOVED_FROM_REPOSITORY_ID, removed); } /** diff --git a/plugins/git4idea/src/git4idea/push/GitPushOperation.java b/plugins/git4idea/src/git4idea/push/GitPushOperation.java index a954a6b3ab7e..dca266446dea 100644 --- a/plugins/git4idea/src/git4idea/push/GitPushOperation.java +++ b/plugins/git4idea/src/git4idea/push/GitPushOperation.java @@ -337,11 +337,11 @@ public class GitPushOperation { private void collectUpdatedFiles(@NotNull UpdatedFiles updatedFiles, @NotNull GitRepository repository, @NotNull String preUpdatePosition) { - MergeChangeCollector collector = new MergeChangeCollector(myProject, repository.getRoot(), new GitRevisionNumber(preUpdatePosition)); - ArrayList exceptions = new ArrayList<>(); - collector.collect(updatedFiles, exceptions); - for (VcsException exception : exceptions) { - LOG.info(exception); + try { + new MergeChangeCollector(myProject, repository.getRoot(), new GitRevisionNumber(preUpdatePosition)).collect(updatedFiles); + } + catch (VcsException e) { + LOG.info(e); } } diff --git a/plugins/git4idea/src/git4idea/update/GitUpdater.java b/plugins/git4idea/src/git4idea/update/GitUpdater.java index e165aa5ca208..c8936cd2a71f 100644 --- a/plugins/git4idea/src/git4idea/update/GitUpdater.java +++ b/plugins/git4idea/src/git4idea/update/GitUpdater.java @@ -22,7 +22,10 @@ import com.intellij.openapi.vcs.AbstractVcsHelper; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.update.UpdatedFiles; import com.intellij.openapi.vfs.VirtualFile; -import git4idea.*; +import git4idea.GitLocalBranch; +import git4idea.GitRevisionNumber; +import git4idea.GitUtil; +import git4idea.GitVcs; import git4idea.branch.GitBranchPair; import git4idea.commands.Git; import git4idea.commands.GitCommand; @@ -35,8 +38,6 @@ import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryManager; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; - import static git4idea.GitUtil.HEAD; import static git4idea.config.UpdateMethod.MERGE; import static git4idea.config.UpdateMethod.REBASE; @@ -187,12 +188,7 @@ public abstract class GitUpdater { protected void markEnd(VirtualFile root) throws VcsException { // find out what have changed, this is done even if the process was cancelled. - final MergeChangeCollector collector = new MergeChangeCollector(myProject, root, myBefore); - final ArrayList exceptions = new ArrayList<>(); - collector.collect(myUpdatedFiles, exceptions); - if (!exceptions.isEmpty()) { - throw exceptions.get(0); - } + new MergeChangeCollector(myProject, root, myBefore).collect(myUpdatedFiles); } protected boolean hasRemoteChanges(@NotNull String remoteBranch) throws VcsException {