[git] simplify: accept roots instead of repositories

This commit is contained in:
Kirill Likhodedov
2015-07-24 16:17:01 +03:00
parent 6b2a945aa7
commit 3044bae718
5 changed files with 31 additions and 22 deletions
@@ -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() {
@@ -215,7 +215,8 @@ class GitMergeOperation extends GitBranchOperation {
private boolean doSmartMerge(@NotNull final Collection<GitRepository> 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<GitRepository> repositories) {
LOG.info("Starting smart rollback...");
final GitCompoundResult result = new GitCompoundResult(myProject);
GitPreservingProcess preservingProcess = new GitPreservingProcess(myProject, myFacade, myGit, repositories, "merge", myBranchToMerge,
getIndicator(),
Collection<VirtualFile> 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) {
@@ -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<GitCommandResult> 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));
@@ -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<GitRepository> myRepositories;
@NotNull private final Collection<VirtualFile> 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<GitRepository> 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<VirtualFile> 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);
@@ -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<VirtualFile> 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 {