From 3044bae718cd43e4e65ac37884c46157236ae4c4 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Fri, 19 Jun 2015 19:58:03 +0300 Subject: [PATCH] [git] simplify: accept roots instead of repositories --- .../git4idea/branch/GitCheckoutOperation.java | 3 ++- .../git4idea/branch/GitMergeOperation.java | 8 ++++--- .../src/git4idea/reset/GitResetOperation.java | 3 ++- .../git4idea/util/GitPreservingProcess.java | 21 ++++++++++++------- .../plugins/github/GithubRebaseAction.java | 18 ++++++++-------- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java b/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java index 0c7b44cd719c..6a721f712681 100644 --- a/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java +++ b/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java @@ -224,7 +224,8 @@ class GitCheckoutOperation extends GitBranchOperation { @Nullable final String newBranch, @NotNull ProgressIndicator indicator) { final AtomicBoolean result = new AtomicBoolean(); GitPreservingProcess preservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, - repositories, "checkout", reference, indicator, + GitUtil.getRootsFromRepositories(repositories), "checkout", reference, + indicator, new Runnable() { @Override public void run() { diff --git a/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java b/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java index 5a0d6a031f98..350be2466aca 100644 --- a/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java +++ b/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java @@ -215,7 +215,8 @@ class GitMergeOperation extends GitBranchOperation { private boolean doSmartMerge(@NotNull final Collection repositories) { final AtomicBoolean success = new AtomicBoolean(); - myPreservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, repositories, "merge", myBranchToMerge, getIndicator(), + myPreservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, GitUtil.getRootsFromRepositories(repositories), "merge", + myBranchToMerge, getIndicator(), new Runnable() { @Override public void run() { @@ -309,8 +310,9 @@ class GitMergeOperation extends GitBranchOperation { private GitCompoundResult smartRollback(@NotNull final Collection repositories) { LOG.info("Starting smart rollback..."); final GitCompoundResult result = new GitCompoundResult(myProject); - GitPreservingProcess preservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, repositories, "merge", myBranchToMerge, - getIndicator(), + Collection roots = GitUtil.getRootsFromRepositories(repositories); + GitPreservingProcess preservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, roots, "merge", + myBranchToMerge, getIndicator(), new Runnable() { @Override public void run() { for (GitRepository repository : repositories) { diff --git a/plugins/git4idea/src/git4idea/reset/GitResetOperation.java b/plugins/git4idea/src/git4idea/reset/GitResetOperation.java index b5efe1102dc6..72fd3b4a693f 100644 --- a/plugins/git4idea/src/git4idea/reset/GitResetOperation.java +++ b/plugins/git4idea/src/git4idea/reset/GitResetOperation.java @@ -111,7 +111,8 @@ public class GitResetOperation { int choice = myUiHandler.showSmartOperationDialog(myProject, affectedChanges, absolutePaths, "reset", "&Hard Reset"); if (choice == GitSmartOperationDialog.SMART_EXIT_CODE) { final Ref result = Ref.create(); - new GitPreservingProcess(myProject, myFacade, myGit, Collections.singleton(repository), "reset", target, myIndicator, new Runnable() { + new GitPreservingProcess(myProject, myFacade, myGit, Collections.singleton(repository.getRoot()), "reset", target, myIndicator, + new Runnable() { @Override public void run() { result.set(myGit.reset(repository, myMode, target)); diff --git a/plugins/git4idea/src/git4idea/util/GitPreservingProcess.java b/plugins/git4idea/src/git4idea/util/GitPreservingProcess.java index 61d5354ca0c0..852423f03844 100644 --- a/plugins/git4idea/src/git4idea/util/GitPreservingProcess.java +++ b/plugins/git4idea/src/git4idea/util/GitPreservingProcess.java @@ -30,8 +30,9 @@ import com.intellij.util.text.DateFormatUtil; import git4idea.GitPlatformFacade; import git4idea.GitUtil; import git4idea.commands.Git; +import git4idea.config.GitVcsSettings; import git4idea.merge.GitConflictResolver; -import git4idea.repo.GitRepository; +import git4idea.stash.GitChangesSaver; import git4idea.stash.GitStashChangesSaver; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -52,7 +53,7 @@ public class GitPreservingProcess { @NotNull private final Project myProject; @NotNull private final GitPlatformFacade myFacade; @NotNull private final Git myGit; - @NotNull private final Collection myRepositories; + @NotNull private final Collection myRootsToSave; @NotNull private final String myOperationTitle; @NotNull private final String myDestinationName; @NotNull private final ProgressIndicator myProgressIndicator; @@ -62,14 +63,18 @@ public class GitPreservingProcess { @NotNull private final AtomicBoolean myLoaded = new AtomicBoolean(); - public GitPreservingProcess(@NotNull Project project, @NotNull GitPlatformFacade facade, @NotNull Git git, - @NotNull Collection repositories, - @NotNull String operationTitle, @NotNull String destinationName, - @NotNull ProgressIndicator indicator, @NotNull Runnable operation) { + public GitPreservingProcess(@NotNull Project project, + @NotNull GitPlatformFacade facade, + @NotNull Git git, + @NotNull Collection rootsToSave, + @NotNull String operationTitle, + @NotNull String destinationName, + @NotNull ProgressIndicator indicator, + @NotNull Runnable operation) { myProject = project; myFacade = facade; myGit = git; - myRepositories = repositories; + myRootsToSave = rootsToSave; myOperationTitle = operationTitle; myDestinationName = destinationName; myProgressIndicator = indicator; @@ -148,7 +153,7 @@ public class GitPreservingProcess { */ private boolean save() { try { - mySaver.saveLocalChanges(GitUtil.getRootsFromRepositories(myRepositories)); + mySaver.saveLocalChanges(myRootsToSave); return true; } catch (VcsException e) { LOG.info("Couldn't save local changes", e); diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java index 3efd666d3ed7..b9d9ce222b23 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java @@ -50,6 +50,7 @@ import org.jetbrains.plugins.github.util.*; import java.io.IOException; import java.util.Collections; +import java.util.List; import static git4idea.commands.GitLocalChangesWouldBeOverwrittenDetector.Operation.CHECKOUT; import static org.jetbrains.plugins.github.util.GithubUtil.setVisibleEnabled; @@ -232,15 +233,14 @@ public class GithubRebaseAction extends DumbAwareAction { final GitPlatformFacade facade = ServiceManager.getService(project, GitPlatformFacade.class); AccessToken token = DvcsUtil.workingTreeChangeStarted(project); try { - GitPreservingProcess process = - new GitPreservingProcess(project, facade, git, Collections.singletonList(gitRepository), "Rebasing", "upstream/master", indicator, - new Runnable() { - @Override - public void run() { - doRebaseCurrentBranch(project, gitRepository.getRoot(), indicator); - } - } - ); + List rootsToSave = Collections.singletonList(gitRepository.getRoot()); + GitPreservingProcess process = new GitPreservingProcess(project, facade, git, rootsToSave, "Rebasing", "upstream/master", indicator, + new Runnable() { + @Override + public void run() { + doRebaseCurrentBranch(project, gitRepository.getRoot(), indicator); + } + }); process.execute(); } finally {