From 87fa823045ec72172f94de14dfd839d5a9ff46ae Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Wed, 1 Jun 2016 14:34:28 +0300 Subject: [PATCH] do not check out current branch --- .../intellij/openapi/vcs/VcsTaskHandler.java | 17 +++++++++++++++++ .../tasks/actions/vcs/VcsOpenTaskPanel.java | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java index d48592882d2a..227a38dbf1d2 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java @@ -76,6 +76,23 @@ public abstract class VcsTaskHandler { public int compareTo(TaskInfo o) { return Comparing.compare(myBranch, o.myBranch); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + TaskInfo info = (TaskInfo)o; + + if (myRemote != info.myRemote) return false; + if (!myBranch.equals(info.myBranch)) return false; + return myRepositories.size() == info.myRepositories.size() && myRepositories.containsAll(info.myRepositories); + } + + @Override + public int hashCode() { + return myBranch.hashCode(); + } } private static final ExtensionPointName EXTENSION_POINT_NAME = ExtensionPointName.create("com.intellij.vcs.taskHandler"); diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/vcs/VcsOpenTaskPanel.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/vcs/VcsOpenTaskPanel.java index 1eae6ea9afb5..2c6514b5ad56 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/vcs/VcsOpenTaskPanel.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/vcs/VcsOpenTaskPanel.java @@ -20,7 +20,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.ValidationInfo; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.vcs.VcsTaskHandler; import com.intellij.tasks.LocalTask; import com.intellij.tasks.Task; @@ -169,7 +168,8 @@ public class VcsOpenTaskPanel extends TaskDialogPanel { if (myCreateBranch.isSelected()) { VcsTaskHandler.TaskInfo branchFrom = (VcsTaskHandler.TaskInfo)myBranchFrom.getSelectedItem(); Runnable createBranch = () -> myTaskManager.createBranch(localTask, myPreviousTask, myBranchName.getText(), branchFrom); - if (branchFrom != null) { + VcsTaskHandler.TaskInfo[] current = myVcsTaskHandler.getCurrentTasks(); + if (branchFrom != null && (current.length == 0 || !current[0].equals(branchFrom))) { myVcsTaskHandler.switchToTask(branchFrom, createBranch); } else {