diff --git a/plugins/git4idea/src/git4idea/branch/GitBrancher.java b/plugins/git4idea/src/git4idea/branch/GitBrancher.java index 6d59c277d7da..8410f138bfd8 100644 --- a/plugins/git4idea/src/git4idea/branch/GitBrancher.java +++ b/plugins/git4idea/src/git4idea/branch/GitBrancher.java @@ -19,6 +19,8 @@ import git4idea.repo.GitRepository; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + /** *

Executes various operations on Git branches: checkout, create new branch, merge, delete, compare.

*

All operations can be called from the EDT: the GitBrancher will take care of starting a background task.

@@ -36,19 +38,22 @@ public interface GitBrancher { * do this before calling this method, otherwise a standard error dialog will be shown.

*

Equivalent to {@code git checkout }

* - * @param name Name of the new branch to check out. + * @param name name of the new branch to check out. + * @param repositories repositories to operate on. */ - void checkoutNewBranch(@NotNull String name); + void checkoutNewBranch(@NotNull String name, @NotNull List repositories); /** *

Creates new tag on the selected reference.

* * @param name the name of new tag. * @param reference the reference which tag will point to. + * @param repositories repositories to operate on. * @param callInAwtLater the Runnable that should be called after execution of the method (both successful and unsuccessful). * If given, it will be called in the EDT {@link javax.swing.SwingUtilities#invokeLater(Runnable) later}. */ - void createNewTag(@NotNull String name, @NotNull String reference, @Nullable Runnable callInAwtLater); + void createNewTag(@NotNull String name, @NotNull String reference, @NotNull List repositories, + @Nullable Runnable callInAwtLater); /** *

Checks out the given reference (a branch, or a reference name, or a commit hash). @@ -56,23 +61,26 @@ public interface GitBrancher { * stash-checkout-unstash.

*

Doesn't check the reference for validity.

* - * @param reference reference to be checked out. + * @param reference reference to be checked out. + * @param repositories repositories to operate on. * @param callInAwtLater the Runnable that should be called after execution of the method (both successful and unsuccessful). * If given, it will be called in the EDT {@link javax.swing.SwingUtilities#invokeLater(Runnable) later}. */ - void checkout(@NotNull String reference, @Nullable Runnable callInAwtLater); + void checkout(@NotNull String reference, @NotNull List repositories, @Nullable Runnable callInAwtLater); /** * Creates and checks out a new local branch starting from the given reference: * {@code git checkout -b }.
* Provides the "smart checkout" procedure the same as in {@link #checkout(String, Runnable)}. * - * @param newBranchName the name of the new local branch. - * @param startPoint the reference to checkout. + * @param newBranchName the name of the new local branch. + * @param startPoint the reference to checkout. + * @param repositories repositories to operate on. * @param callInAwtLater the Runnable that should be called after execution of the method (both successful and unsuccessful). * If given, it will be called in the EDT {@link javax.swing.SwingUtilities#invokeLater(Runnable) later}. */ - void checkoutNewBranchStartingFrom(@NotNull String newBranchName, @NotNull String startPoint, @Nullable Runnable callInAwtLater); + void checkoutNewBranchStartingFrom(@NotNull String newBranchName, @NotNull String startPoint, @NotNull List repositories, + @Nullable Runnable callInAwtLater); /** *

Deletes the branch with the specified name.

@@ -81,26 +89,30 @@ public interface GitBrancher { * displays a dialog showing commits that are not merged and proposing to execute force deletion:

*

{@code git branch -D }

* - * @param branchName the name of the branch to be deleted. + * @param branchName the name of the branch to be deleted. + * @param repositories repositories to operate on. */ - void deleteBranch(String branchName); + void deleteBranch(@NotNull String branchName, @NotNull List repositories); /** *

Deletes the remote branch:

*

{@code git push :}

- * @param branchName name of the remote branch to delete. + * + * @param branchName name of the remote branch to delete. + * @param repositories Repositories to operate on. */ - void deleteRemoteBranch(@NotNull String branchName); + void deleteRemoteBranch(@NotNull String branchName, @NotNull List repositories); /** * Compares the HEAD with the specified branch - shows a dialog with the differences. * * @param branchName name of the branch to compare with. + * @param repositories repositories to operate on. * @param selectedRepository current or selected repository. * The list of commits is displayed for the repository selected from the combobox. * This parameter tells which repository should be pre-selected in the combobox. */ - void compare(@NotNull String branchName, @NotNull GitRepository selectedRepository); + void compare(@NotNull String branchName, @NotNull List repositories, @NotNull GitRepository selectedRepository); /** *

Merges the given branch to the HEAD.

@@ -108,11 +120,12 @@ public interface GitBrancher { *

If local changes prevent merging, proposes the "Smart merge" procedure (stash-merge-unstash).

*

If untracked files prevent merging, shows them in an error dialog.

* - * @param branchName the branch to be merged into HEAD. - * @param localBranch true indicates that the merged branch is a local branch, false - that it is a remote branch. - * After a local branch is merged, the IDE proposes to delete it at once (common feature branches workflow), - * but it is not done for remote branches and for master. + * @param branchName the branch to be merged into HEAD. + * @param localBranch true indicates that the merged branch is a local branch, false - that it is a remote branch. + * After a local branch is merged, the IDE proposes to delete it at once (common feature branches workflow), + * but it is not done for remote branches and for master. + * @param repositories repositories to operate on. */ - void merge(@NotNull String branchName, boolean localBranch); + void merge(@NotNull String branchName, boolean localBranch, @NotNull List repositories); } diff --git a/plugins/git4idea/src/git4idea/branch/GitBrancherImpl.java b/plugins/git4idea/src/git4idea/branch/GitBrancherImpl.java index b97c79181e1a..68038273b85a 100644 --- a/plugins/git4idea/src/git4idea/branch/GitBrancherImpl.java +++ b/plugins/git4idea/src/git4idea/branch/GitBrancherImpl.java @@ -59,116 +59,117 @@ public final class GitBrancherImpl implements GitBrancher { private static final Logger LOG = Logger.getInstance(GitBrancherImpl.class); - private final Project myProject; - private final List myRepositories; - private final Git myGit; + @NotNull private final Project myProject; + @NotNull private final Git myGit; - public GitBrancherImpl(@NotNull GitRepository repository) { - this(repository.getProject(), Collections.singletonList(repository)); - } - - public GitBrancherImpl(@NotNull Project project, @NotNull List repositories) { + public GitBrancherImpl(@NotNull Project project) { myProject = project; - myRepositories = repositories; myGit = ServiceManager.getService(Git.class); } @NotNull - private String getCurrentBranchOrRev() { - if (myRepositories.size() > 1) { - GitMultiRootBranchConfig multiRootBranchConfig = new GitMultiRootBranchConfig(myRepositories); + private static String getCurrentBranchOrRev(@NotNull List repositories) { + if (repositories.size() > 1) { + GitMultiRootBranchConfig multiRootBranchConfig = new GitMultiRootBranchConfig(repositories); String currentBranch = multiRootBranchConfig.getCurrentBranch(); LOG.assertTrue(currentBranch != null, "Repositories have unexpectedly diverged. " + multiRootBranchConfig); return currentBranch; } else { - assert !myRepositories.isEmpty() : "No repositories passed to GitBranchOperationsProcessor."; - GitRepository repository = myRepositories.iterator().next(); + assert !repositories.isEmpty() : "No repositories passed to GitBranchOperationsProcessor."; + GitRepository repository = repositories.iterator().next(); return GitBranchUiUtil.getBranchNameOrRev(repository); } } @Override - public void checkoutNewBranch(@NotNull final String name) { + public void checkoutNewBranch(@NotNull final String name, @NotNull final List repositories) { new CommonBackgroundTask(myProject, "Checking out new branch " + name, null) { @Override public void execute(@NotNull ProgressIndicator indicator) { - doCheckoutNewBranch(name, indicator); + doCheckoutNewBranch(name, repositories, indicator); } }.runInBackground(); } @Override - public void createNewTag(@NotNull final String name, @NotNull final String reference, @Nullable Runnable callInAwtLater) { + public void createNewTag(@NotNull final String name, @NotNull final String reference, @NotNull final List repositories, + @Nullable Runnable callInAwtLater) { new CommonBackgroundTask(myProject, "Checking out new branch " + name, callInAwtLater) { @Override public void execute(@NotNull ProgressIndicator indicator) { - for (GitRepository repository : myRepositories) { + for (GitRepository repository : repositories) { myGit.createNewTag(repository, name, null, reference); } } }.runInBackground(); } - private void doCheckoutNewBranch(@NotNull final String name, @NotNull ProgressIndicator indicator) { - new GitCheckoutNewBranchOperation(myProject, myGit, myRepositories, name, getCurrentBranchOrRev(), indicator).execute(); + private void doCheckoutNewBranch(@NotNull final String name, @NotNull List repositories, + @NotNull ProgressIndicator indicator) { + new GitCheckoutNewBranchOperation(myProject, myGit, repositories, name, getCurrentBranchOrRev(repositories), indicator).execute(); } @Override - public void checkoutNewBranchStartingFrom(@NotNull String newBranchName, @NotNull String startPoint, @Nullable Runnable callInAwtLater) { - commonCheckout(startPoint, newBranchName, callInAwtLater); + public void checkoutNewBranchStartingFrom(@NotNull String newBranchName, @NotNull String startPoint, + @NotNull List repositories, @Nullable Runnable callInAwtLater) { + commonCheckout(startPoint, newBranchName, repositories, callInAwtLater); } @Override - public void checkout(@NotNull final String reference, @Nullable Runnable callInAwtLater) { - commonCheckout(reference, null, callInAwtLater); + public void checkout(@NotNull final String reference, @NotNull List repositories, @Nullable Runnable callInAwtLater) { + commonCheckout(reference, null, repositories, callInAwtLater); } - private void commonCheckout(@NotNull final String reference, @Nullable final String newBranch, @Nullable Runnable callInAwtLater) { + private void commonCheckout(@NotNull final String reference, @Nullable final String newBranch, @NotNull final List repositories, + @Nullable Runnable callInAwtLater) { new CommonBackgroundTask(myProject, "Checking out " + reference, callInAwtLater) { @Override public void execute(@NotNull ProgressIndicator indicator) { - doCheckout(indicator, reference, newBranch); + doCheckout(indicator, reference, repositories, newBranch); } }.runInBackground(); } - private void doCheckout(@NotNull ProgressIndicator indicator, @NotNull String reference, @Nullable String newBranch) { - new GitCheckoutOperation(myProject, myGit, myRepositories, reference, newBranch, getCurrentBranchOrRev(), indicator).execute(); + private void doCheckout(@NotNull ProgressIndicator indicator, @NotNull String reference, @NotNull List repositories, + @Nullable String newBranch) { + new GitCheckoutOperation(myProject, myGit, repositories, reference, newBranch, getCurrentBranchOrRev(repositories), indicator) + .execute(); } @Override - public void deleteBranch(final String branchName) { + public void deleteBranch(@NotNull final String branchName, @NotNull final List repositories) { new CommonBackgroundTask(myProject, "Deleting " + branchName, null) { @Override public void execute(@NotNull ProgressIndicator indicator) { - doDelete(branchName, indicator); + doDelete(branchName, repositories, indicator); } }.runInBackground(); } - private void doDelete(@NotNull String branchName, @NotNull ProgressIndicator indicator) { - new GitDeleteBranchOperation(myProject, myGit, myRepositories, branchName, getCurrentBranchOrRev(), indicator).execute(); + private void doDelete(@NotNull String branchName, @NotNull List repositories, @NotNull ProgressIndicator indicator) { + new GitDeleteBranchOperation(myProject, myGit, repositories, branchName, getCurrentBranchOrRev(repositories), indicator).execute(); } @Override - public void deleteRemoteBranch(@NotNull final String branchName) { - final Collection trackingBranches = findTrackingBranches(branchName); - String currentBranch = getCurrentBranchOrRev(); + public void deleteRemoteBranch(@NotNull final String branchName, @NotNull final List repositories) { + final Collection trackingBranches = findTrackingBranches(branchName, repositories); + String currentBranch = getCurrentBranchOrRev(repositories); boolean currentBranchTracksBranchToDelete = false; if (trackingBranches.contains(currentBranch)) { currentBranchTracksBranchToDelete = true; trackingBranches.remove(currentBranch); } - final DeleteRemoteBranchDecision decision = confirmBranchDeletion(branchName, trackingBranches, currentBranchTracksBranchToDelete); + final DeleteRemoteBranchDecision decision = confirmBranchDeletion(branchName, trackingBranches, currentBranchTracksBranchToDelete, + repositories); if (decision.delete()) { new CommonBackgroundTask(myProject, "Deleting " + branchName, null) { @Override public void execute(@NotNull ProgressIndicator indicator) { - boolean deletedSuccessfully = doDeleteRemote(branchName); + boolean deletedSuccessfully = doDeleteRemote(branchName, repositories); if (deletedSuccessfully) { final Collection successfullyDeletedLocalBranches = new ArrayList(1); if (decision.deleteTracking()) { for (final String branch : trackingBranches) { indicator.setText("Deleting " + branch); - new GitDeleteBranchOperation(myProject, myGit, myRepositories, branch, getCurrentBranchOrRev(), indicator) { + new GitDeleteBranchOperation(myProject, myGit, repositories, branch, getCurrentBranchOrRev(repositories), indicator) { @Override protected void notifySuccess(@NotNull String message) { // do nothing - will display a combo notification for all deleted branches below @@ -185,13 +186,13 @@ public final class GitBrancherImpl implements GitBrancher { } @NotNull - private Collection findTrackingBranches(@NotNull String remoteBranch) { - return new GitMultiRootBranchConfig(myRepositories).getTrackingBranches(remoteBranch); + private static Collection findTrackingBranches(@NotNull String remoteBranch, @NotNull List repositories) { + return new GitMultiRootBranchConfig(repositories).getTrackingBranches(remoteBranch); } - private boolean doDeleteRemote(String branchName) { + private boolean doDeleteRemote(@NotNull String branchName, @NotNull List repositories) { GitCompoundResult result = new GitCompoundResult(myProject); - for (GitRepository repository : myRepositories) { + for (GitRepository repository : repositories) { Pair pair = GitBranch.splitNameOfRemoteBranch(branchName); String remote = pair.getFirst(); String branch = pair.getSecond(); @@ -207,7 +208,7 @@ public final class GitBrancherImpl implements GitBrancher { } @NotNull - private GitCommandResult pushDeletion(GitRepository repository, String remoteName, String branchName) { + private GitCommandResult pushDeletion(@NotNull GitRepository repository, @NotNull String remoteName, @NotNull String branchName) { GitRemote remote = getRemoteByName(repository, remoteName); if (remote == null) { return pushDeletionNatively(repository, remoteName, branchName); @@ -225,12 +226,13 @@ public final class GitBrancherImpl implements GitBrancher { } } - private GitCommandResult pushDeletionNatively(GitRepository repository, String remoteName, String branchName) { + @NotNull + private GitCommandResult pushDeletionNatively(@NotNull GitRepository repository, @NotNull String remoteName, @NotNull String branchName) { return myGit.push(repository, remoteName, ":" + branchName); } @NotNull - private static GitCommandResult convertSimplePushResultToCommandResult(GitSimplePushResult result) { + private static GitCommandResult convertSimplePushResultToCommandResult(@NotNull GitSimplePushResult result) { boolean success = result.getType() == GitSimplePushResult.Type.SUCCESS; return new GitCommandResult(success, -1, success ? Collections.emptyList() : Collections.singletonList(result.getOutput()), success ? Collections.singletonList(result.getOutput()) : Collections.emptyList()); @@ -256,7 +258,8 @@ public final class GitBrancherImpl implements GitBrancher { } private DeleteRemoteBranchDecision confirmBranchDeletion(@NotNull String branchName, @NotNull Collection trackingBranches, - boolean currentBranchTracksBranchToDelete) { + boolean currentBranchTracksBranchToDelete, + @NotNull List repositories) { String title = "Delete Remote Branch"; String message = "Delete remote branch " + branchName; @@ -268,7 +271,7 @@ public final class GitBrancherImpl implements GitBrancher { } else { if (currentBranchTracksBranchToDelete) { - message += "\n\nCurrent branch " + getCurrentBranchOrRev() + " tracks " + branchName + " but won't be deleted."; + message += "\n\nCurrent branch " + getCurrentBranchOrRev(repositories) + " tracks " + branchName + " but won't be deleted."; } final String checkboxMessage; if (trackingBranches.size() == 1) { @@ -329,23 +332,24 @@ public final class GitBrancherImpl implements GitBrancher { } @Override - public void compare(@NotNull final String branchName, @NotNull final GitRepository selectedRepository) { + public void compare(@NotNull final String branchName, @NotNull final List repositories, + @NotNull final GitRepository selectedRepository) { new CommonBackgroundTask(myProject, "Comparing with " + branchName, null) { private GitCommitCompareInfo myCompareInfo; @Override public void execute(@NotNull ProgressIndicator indicator) { - myCompareInfo = loadCommitsToCompare(myRepositories, branchName); + myCompareInfo = loadCommitsToCompare(repositories, branchName); } @Override public void onSuccess() { if (myCompareInfo == null) { - LOG.error("The task to get compare info didn't finish. Repositories: \n" + myRepositories + "\nbranch name: " + branchName); + LOG.error("The task to get compare info didn't finish. Repositories: \n" + repositories + "\nbranch name: " + branchName); return; } - displayCompareDialog(branchName, getCurrentBranchOrRev(), myCompareInfo, selectedRepository); + displayCompareDialog(branchName, getCurrentBranchOrRev(repositories), myCompareInfo, selectedRepository); } }.runInBackground(); } @@ -397,20 +401,21 @@ public final class GitBrancherImpl implements GitBrancher { } @Override - public void merge(@NotNull final String branchName, final boolean localBranch) { + public void merge(@NotNull final String branchName, final boolean localBranch, @NotNull final List repositories) { new CommonBackgroundTask(myProject, "Merging " + branchName, null) { @Override public void execute(@NotNull ProgressIndicator indicator) { - doMerge(branchName, localBranch, indicator); + doMerge(branchName, localBranch, repositories, indicator); } }.runInBackground(); } - private void doMerge(@NotNull String branchName, boolean localBranch, @NotNull ProgressIndicator indicator) { + private void doMerge(@NotNull String branchName, boolean localBranch, @NotNull List repositories, + @NotNull ProgressIndicator indicator) { Map revisions = new HashMap(); - for (GitRepository repository : myRepositories) { + for (GitRepository repository : repositories) { revisions.put(repository, repository.getCurrentRevision()); } - new GitMergeOperation(myProject, myGit, myRepositories, branchName, localBranch, getCurrentBranchOrRev(), + new GitMergeOperation(myProject, myGit, repositories, branchName, localBranch, getCurrentBranchOrRev(repositories), revisions, indicator).execute(); } diff --git a/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java b/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java index 721d9f6a1ec3..39cfe102437b 100644 --- a/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java +++ b/plugins/git4idea/src/git4idea/branch/GitMergeOperation.java @@ -378,7 +378,7 @@ class GitMergeOperation extends GitBranchOperation { public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED && event.getDescription().equalsIgnoreCase("delete")) { - new GitBrancherImpl(myProject, new ArrayList(getRepositories())).deleteBranch(myBranchToMerge); + new GitBrancherImpl(myProject).deleteBranch(myBranchToMerge, new ArrayList(getRepositories())); } } } diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GitCreateNewTag.java b/plugins/git4idea/src/git4idea/history/wholeTree/GitCreateNewTag.java index 909c77d5a08b..0810d622d1d1 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/GitCreateNewTag.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/GitCreateNewTag.java @@ -22,6 +22,8 @@ import com.intellij.openapi.util.text.StringUtil; import git4idea.branch.GitBrancherImpl; import git4idea.repo.GitRepository; +import java.util.Collections; + /** * Created by IntelliJ IDEA. * User: Irina.Chernushina @@ -55,7 +57,7 @@ public class GitCreateNewTag { } }); if (name != null) { - new GitBrancherImpl(myRepository).createNewTag(name, myReference, myCallInAwtAfterExecution); + new GitBrancherImpl(myProject).createNewTag(name, myReference, Collections.singletonList(myRepository), myCallInAwtAfterExecution); } } } diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java index 88a277e85069..64b01150c03f 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java @@ -2439,7 +2439,8 @@ public class GitLogUI implements Disposable { final GitRepository repository = GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs)); if (repository == null) return; - new GitBrancherImpl(repository).checkout(commitAt.getHash().getString(), myRefresh); + new GitBrancherImpl(repository.getProject()).checkout(commitAt.getHash().getString(), + Collections.singletonList(repository), myRefresh); } @Override @@ -2467,7 +2468,8 @@ public class GitLogUI implements Disposable { String reference = commitAt.getHash().getString(); final String name = GitBranchUiUtil.getNewBranchNameFromUser(myProject, Collections.singleton(repository), "Checkout New Branch From " + reference); if (name != null) { - new GitBrancherImpl(repository).checkoutNewBranchStartingFrom(name, reference, myRefresh); + new GitBrancherImpl(repository.getProject()).checkoutNewBranchStartingFrom(name, reference, + Collections.singletonList(repository), myRefresh); } } diff --git a/plugins/git4idea/src/git4idea/ui/branch/GitBranchPopupActions.java b/plugins/git4idea/src/git4idea/ui/branch/GitBranchPopupActions.java index 04c6153fa8b2..0ce197f27a6b 100644 --- a/plugins/git4idea/src/git4idea/ui/branch/GitBranchPopupActions.java +++ b/plugins/git4idea/src/git4idea/ui/branch/GitBranchPopupActions.java @@ -93,7 +93,7 @@ class GitBranchPopupActions { public void actionPerformed(AnActionEvent e) { final String name = GitBranchUiUtil.getNewBranchNameFromUser(myProject, myRepositories, "Create New Branch"); if (name != null) { - new GitBrancherImpl(myProject, myRepositories).checkoutNewBranch(name); + new GitBrancherImpl(myProject).checkoutNewBranch(name, myRepositories); } } @@ -134,7 +134,7 @@ class GitBranchPopupActions { String reference = Messages .showInputDialog(myProject, "Enter reference (branch, tag) name or commit hash", "Checkout", Messages.getQuestionIcon()); if (reference != null) { - new GitBrancherImpl(myRepository).checkout(reference, null); + new GitBrancherImpl(myProject).checkout(reference, Collections.singletonList(myRepository), null); } } @@ -214,7 +214,7 @@ class GitBranchPopupActions { @Override public void actionPerformed(AnActionEvent e) { - new GitBrancherImpl(myProject, myRepositories).checkout(myBranchName, null); + new GitBrancherImpl(myProject).checkout(myBranchName, myRepositories, null); } } @@ -237,7 +237,7 @@ class GitBranchPopupActions { .showInputDialog(myProject, "Enter name of new branch", "Checkout New Branch From " + myBranchName, Messages.getQuestionIcon(), "", GitNewBranchNameValidator.newInstance(myRepositories)); if (name != null) { - new GitBrancherImpl(myProject, myRepositories).checkoutNewBranchStartingFrom(name, myBranchName, null); + new GitBrancherImpl(myProject).checkoutNewBranchStartingFrom(name, myBranchName, myRepositories, null); } } @@ -257,7 +257,7 @@ class GitBranchPopupActions { @Override public void actionPerformed(AnActionEvent e) { - new GitBrancherImpl(myProject, myRepositories).deleteBranch(myBranchName); + new GitBrancherImpl(myProject).deleteBranch(myBranchName, myRepositories); } } } @@ -311,7 +311,7 @@ class GitBranchPopupActions { final String name = Messages.showInputDialog(myProject, "Enter name of new branch", "Checkout Remote Branch", Messages.getQuestionIcon(), guessBranchName(), GitNewBranchNameValidator.newInstance(myRepositories)); if (name != null) { - new GitBrancherImpl(myProject, myRepositories).checkoutNewBranchStartingFrom(name, myRemoteBranchName, null); + new GitBrancherImpl(myProject).checkoutNewBranchStartingFrom(name, myRemoteBranchName, myRepositories, null); } } @@ -337,7 +337,7 @@ class GitBranchPopupActions { @Override public void actionPerformed(AnActionEvent e) { - new GitBrancherImpl(myProject, myRepositories).deleteRemoteBranch(myBranchName); + new GitBrancherImpl(myProject).deleteRemoteBranch(myBranchName, myRepositories); } } @@ -361,7 +361,7 @@ class GitBranchPopupActions { @Override public void actionPerformed(AnActionEvent e) { - new GitBrancherImpl(myProject, myRepositories).compare(myBranchName, mySelectedRepository); + new GitBrancherImpl(myProject).compare(myBranchName, myRepositories, mySelectedRepository); } } @@ -384,7 +384,7 @@ class GitBranchPopupActions { @Override public void actionPerformed(AnActionEvent e) { - new GitBrancherImpl(myProject, myRepositories).merge(myBranchName, myLocalBranch); + new GitBrancherImpl(myProject).merge(myBranchName, myLocalBranch, myRepositories); } } diff --git a/plugins/git4idea/tests/git4idea/branch/GitBranchOperationsTest.java b/plugins/git4idea/tests/git4idea/branch/GitBranchOperationsTest.java index c0571cf24441..ca79ffaf6973 100644 --- a/plugins/git4idea/tests/git4idea/branch/GitBranchOperationsTest.java +++ b/plugins/git4idea/tests/git4idea/branch/GitBranchOperationsTest.java @@ -461,10 +461,10 @@ public class GitBranchOperationsTest extends AbstractVcsTestCase { return DialogWrapper.CANCEL_EXIT_CODE; } }); - GitBrancher processor = new GitBrancherImpl(myProject, singletonList(myCommunity)); + GitBrancher processor = new GitBrancherImpl(myProject); Method method = GitBrancherImpl.class.getDeclaredMethod("doDelete", String.class, ProgressIndicator.class); method.setAccessible(true); - method.invoke(processor, "feature", new EmptyProgressIndicator()); + method.invoke(processor, "feature", singletonList(myCommunity), new EmptyProgressIndicator()); assertTrue(dialogShown.get()); } @@ -670,10 +670,10 @@ public class GitBranchOperationsTest extends AbstractVcsTestCase { } private void doMerge(String branch) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException { - GitBrancher processor = new GitBrancherImpl(myProject, myRepositories); + GitBrancher processor = new GitBrancherImpl(myProject); Method method = GitBrancherImpl.class.getDeclaredMethod("doMerge", String.class, Boolean.TYPE, ProgressIndicator.class); method.setAccessible(true); - method.invoke(processor, branch, true, new EmptyProgressIndicator()); + method.invoke(processor, branch, true, myRepositories, new EmptyProgressIndicator()); // sync refresh is needed, because the refresh inside GitMergeOperation is asynchronous. for (GitRepository repository : myRepositories) { @@ -707,10 +707,10 @@ public class GitBranchOperationsTest extends AbstractVcsTestCase { private void callPrivateBranchOperationsProcessorMethod(String methodName, String branchName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { // call private doCheckoutNewBranch instead of public checkoutNewBranch to avoid dealing with background process creation // same for other branch operations - GitBrancher processor = new GitBrancherImpl(myProject, myRepositories); + GitBrancher processor = new GitBrancherImpl(myProject); Method method = GitBrancherImpl.class.getDeclaredMethod(methodName, String.class, ProgressIndicator.class); method.setAccessible(true); - method.invoke(processor, branchName, new EmptyProgressIndicator()); + method.invoke(processor, branchName, myRepositories, new EmptyProgressIndicator()); } private void doDeleteBranch(@NotNull String branchName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { @@ -718,10 +718,10 @@ public class GitBranchOperationsTest extends AbstractVcsTestCase { } private void doCheckout(@NotNull String branchName, @Nullable String newBranch) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException { - GitBrancher processor = new GitBrancherImpl(myProject, myRepositories); + GitBrancher processor = new GitBrancherImpl(myProject); Method doCheckout = GitBrancherImpl.class.getDeclaredMethod("doCheckout", ProgressIndicator.class, String.class, String.class); doCheckout.setAccessible(true); - doCheckout.invoke(processor, new EmptyProgressIndicator(), branchName, newBranch); + doCheckout.invoke(processor, new EmptyProgressIndicator(), branchName, newBranch, myRepositories); } private void assertBranch(String branch) throws IOException {