mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
sync task closing
This commit is contained in:
@@ -44,7 +44,7 @@ public abstract class VcsTaskHandler {
|
||||
|
||||
public abstract void switchToTask(TaskInfo taskInfo);
|
||||
|
||||
public abstract void closeTask(TaskInfo taskInfo);
|
||||
public abstract void closeTask(TaskInfo taskInfo, TaskInfo original);
|
||||
|
||||
public abstract TaskInfo getActiveTask();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
@@ -98,10 +100,25 @@ public class GitTaskHandler extends VcsTaskHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeTask(TaskInfo taskInfo) {
|
||||
public void closeTask(final TaskInfo taskInfo, TaskInfo original) {
|
||||
|
||||
for (String branchName : taskInfo.branches.keySet()) {
|
||||
myBrancher.merge(branchName, GitBrancher.DeleteOnMergeOption.DELETE, getRepositories(taskInfo.branches.get(branchName)));
|
||||
Set<String> branches = original.branches.keySet();
|
||||
final AtomicInteger counter = new AtomicInteger(branches.size());
|
||||
for (final String originalBranch : branches) {
|
||||
myBrancher.checkout(originalBranch, getRepositories(original.branches.get(originalBranch)), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (counter.decrementAndGet() == 0) {
|
||||
merge(taskInfo);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void merge(TaskInfo taskInfo) {
|
||||
for (String featureBranch : taskInfo.branches.keySet()) {
|
||||
myBrancher.merge(featureBranch, GitBrancher.DeleteOnMergeOption.DELETE, getRepositories(taskInfo.branches.get(featureBranch)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,12 @@ class GitBrancherImpl implements GitBrancher {
|
||||
execute(indicator);
|
||||
if (myCallInAwtAfterExecution != null) {
|
||||
Application application = ApplicationManager.getApplication();
|
||||
application.invokeLater(myCallInAwtAfterExecution, application.getDefaultModalityState());
|
||||
if (application.isUnitTestMode()) {
|
||||
myCallInAwtAfterExecution.run();
|
||||
}
|
||||
else {
|
||||
application.invokeLater(myCallInAwtAfterExecution, application.getDefaultModalityState());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -411,8 +411,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
|
||||
VcsTaskHandler[] handlers = VcsTaskHandler.getAllHandlers(myProject);
|
||||
for (VcsTaskHandler handler : handlers) {
|
||||
handler.switchToTask(original);
|
||||
handler.closeTask(feature);
|
||||
handler.closeTask(feature, original);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,8 +18,10 @@ package com.intellij.tasks.vcs;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vcs.VcsTaskHandler;
|
||||
import com.intellij.tasks.LocalTask;
|
||||
import com.intellij.tasks.TaskManagerTestCase;
|
||||
import com.intellij.tasks.TaskManager;
|
||||
import com.intellij.tasks.impl.LocalTaskImpl;
|
||||
import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.testFramework.PlatformTestCase;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import git4idea.branch.GitBranchesCollection;
|
||||
@@ -34,10 +36,11 @@ import java.util.List;
|
||||
* Date: 18.07.13
|
||||
*/
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public class TaskBranchesTest extends TaskManagerTestCase {
|
||||
public class TaskBranchesTest extends PlatformTestCase {
|
||||
|
||||
// todo re-enable
|
||||
public void _testGitTaskHandler() throws Exception {
|
||||
private TaskManagerImpl myTaskManager;
|
||||
|
||||
public void testGitTaskHandler() throws Exception {
|
||||
|
||||
List<GitRepository> repositories = initRepositories("community", "idea");
|
||||
GitRepository repository = repositories.get(0);
|
||||
@@ -61,10 +64,8 @@ public class TaskBranchesTest extends TaskManagerTestCase {
|
||||
assertEquals(3, repository.getBranches().getLocalBranches().size());
|
||||
assertEquals(second, repository.getCurrentBranch().getName());
|
||||
|
||||
handler.switchToTask(firstInfo);
|
||||
assertEquals(first, repository.getCurrentBranch().getName());
|
||||
|
||||
handler.closeTask(secondInfo);
|
||||
handler.closeTask(secondInfo, firstInfo);
|
||||
repository.update();
|
||||
assertEquals(2, repository.getBranches().getLocalBranches().size());
|
||||
}
|
||||
|
||||
@@ -113,4 +114,10 @@ public class TaskBranchesTest extends TaskManagerTestCase {
|
||||
assertEquals(1, branches.getLocalBranches().size());
|
||||
return repository;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
myTaskManager = (TaskManagerImpl)TaskManager.getManager(getProject());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user