IDEA-80258 Git: sort repositories when performing multi-repo actions

Return repositories from the repository manager already sorted.
The order matters => change Collection to List in GitBranchPopup and GitBranchOperationsProcessor
This commit is contained in:
Kirill Likhodedov
2012-01-30 16:09:21 +04:00
parent 87876eefca
commit bdb12e05b8
4 changed files with 31 additions and 30 deletions
@@ -38,7 +38,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -52,7 +51,7 @@ public final class GitBranchOperationsProcessor {
private static final Logger LOG = Logger.getInstance(GitBranchOperationsProcessor.class);
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
@Nullable private final Runnable myCallInAwtAfterExecution;
private final GitRepository mySelectedRepository;
@@ -61,16 +60,16 @@ public final class GitBranchOperationsProcessor {
}
public GitBranchOperationsProcessor(@NotNull GitRepository repository, @Nullable Runnable callInAwtAfterExecution) {
this(repository.getProject(), Collections.singleton(repository), repository, callInAwtAfterExecution);
this(repository.getProject(), Collections.singletonList(repository), repository, callInAwtAfterExecution);
}
public GitBranchOperationsProcessor(@NotNull Project project, @NotNull Collection<GitRepository> repositories,
public GitBranchOperationsProcessor(@NotNull Project project, @NotNull List<GitRepository> repositories,
@NotNull GitRepository selectedRepository) {
this(project, repositories, selectedRepository, null);
}
public GitBranchOperationsProcessor(@NotNull Project project,
@NotNull Collection<GitRepository> repositories,
@NotNull List<GitRepository> repositories,
@NotNull GitRepository selectedRepository,
@Nullable Runnable callInAwtAfterExecution) {
myProject = project;
@@ -205,7 +204,7 @@ public final class GitBranchOperationsProcessor {
}.runInBackground();
}
private GitCommitCompareInfo loadCommitsToCompare(Collection<GitRepository> repositories, String branchName) {
private GitCommitCompareInfo loadCommitsToCompare(List<GitRepository> repositories, String branchName) {
GitCommitCompareInfo compareInfo = new GitCommitCompareInfo();
for (GitRepository repository : repositories) {
compareInfo.put(repository, loadCommitsToCompare(repository, branchName));
@@ -33,6 +33,8 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import static git4idea.GitUtil.sortRepositories;
/**
* GitRepositoryManager initializes and stores {@link GitRepository GitRepositories} for Git roots defined in the project.
* @author Kirill Likhodedov
@@ -152,10 +154,10 @@ public final class GitRepositoryManager extends AbstractProjectComponent impleme
* @return all repositories tracked by the manager.
*/
@NotNull
public Collection<GitRepository> getRepositories() {
public List<GitRepository> getRepositories() {
try {
REPO_LOCK.readLock().lock();
return myRepositories.values();
return sortRepositories(myRepositories.values());
}
finally {
REPO_LOCK.readLock().unlock();
@@ -33,7 +33,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -56,7 +55,7 @@ class GitBranchPopupActions {
DefaultActionGroup popupGroup = new DefaultActionGroup(null, false);
popupGroup.addAction(new CurrentBranchAction(GitBranchUiUtil.getDisplayableBranchText(myRepository), "in root " + GitUIUtil.getShortRepositoryName(myRepository)));
popupGroup.addAction(new NewBranchAction(myProject, Collections.singleton(myRepository), myRepository));
popupGroup.addAction(new NewBranchAction(myProject, Collections.singletonList(myRepository), myRepository));
popupGroup.addAction(new CheckoutRevisionActions(myProject, myRepository));
if (toInsert != null) {
@@ -68,7 +67,7 @@ class GitBranchPopupActions {
Collections.sort(localBranches);
for (GitBranch localBranch : localBranches) {
if (!localBranch.equals(myRepository.getCurrentBranch())) { // don't show current branch in the list
popupGroup.add(new LocalBranchActions(myProject, Collections.singleton(myRepository), localBranch.getName(), myRepository));
popupGroup.add(new LocalBranchActions(myProject, Collections.singletonList(myRepository), localBranch.getName(), myRepository));
}
}
@@ -76,7 +75,7 @@ class GitBranchPopupActions {
List<GitBranch> remoteBranches = new ArrayList<GitBranch>(myRepository.getBranches().getRemoteBranches());
Collections.sort(remoteBranches);
for (GitBranch remoteBranch : remoteBranches) {
popupGroup.add(new RemoteBranchActions(myProject, Collections.singleton(myRepository), remoteBranch.getName(), myRepository));
popupGroup.add(new RemoteBranchActions(myProject, Collections.singletonList(myRepository), remoteBranch.getName(), myRepository));
}
return popupGroup;
@@ -101,10 +100,10 @@ class GitBranchPopupActions {
static class NewBranchAction extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
@NotNull private final GitRepository mySelectedRepository;
NewBranchAction(@NotNull Project project, @NotNull Collection<GitRepository> repositories, @NotNull GitRepository selectedRepository) {
NewBranchAction(@NotNull Project project, @NotNull List<GitRepository> repositories, @NotNull GitRepository selectedRepository) {
super("New Branch", "Create and checkout new branch", IconLoader.getIcon("/general/add.png"));
myProject = project;
myRepositories = repositories;
@@ -175,11 +174,11 @@ class GitBranchPopupActions {
static class LocalBranchActions extends ActionGroup {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private String myBranchName;
@NotNull private final GitRepository mySelectedRepository;
LocalBranchActions(@NotNull Project project, @NotNull Collection<GitRepository> repositories, @NotNull String branchName,
LocalBranchActions(@NotNull Project project, @NotNull List<GitRepository> repositories, @NotNull String branchName,
@NotNull GitRepository selectedRepository) {
super("", true);
myProject = project;
@@ -202,11 +201,11 @@ class GitBranchPopupActions {
private static class CheckoutAction extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private final String myBranchName;
@NotNull private final GitRepository mySelectedRepository;
CheckoutAction(@NotNull Project project, @NotNull Collection<GitRepository> repositories, @NotNull String branchName,
CheckoutAction(@NotNull Project project, @NotNull List<GitRepository> repositories, @NotNull String branchName,
@NotNull GitRepository selectedRepository) {
super("Checkout");
myProject = project;
@@ -224,11 +223,11 @@ class GitBranchPopupActions {
private static class CheckoutAsNewBranch extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private final String myBranchName;
@NotNull private final GitRepository mySelectedRepository;
CheckoutAsNewBranch(@NotNull Project project, @NotNull Collection<GitRepository> repositories, @NotNull String branchName,
CheckoutAsNewBranch(@NotNull Project project, @NotNull List<GitRepository> repositories, @NotNull String branchName,
@NotNull GitRepository selectedRepository) {
super("Checkout as new branch");
myProject = project;
@@ -254,11 +253,11 @@ class GitBranchPopupActions {
*/
private static class DeleteAction extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private final String myBranchName;
private final GitRepository mySelectedRepository;
DeleteAction(Project project, Collection<GitRepository> repositories, String branchName, GitRepository selectedRepository) {
DeleteAction(Project project, List<GitRepository> repositories, String branchName, GitRepository selectedRepository) {
super("Delete");
myProject = project;
myRepositories = repositories;
@@ -279,11 +278,11 @@ class GitBranchPopupActions {
static class RemoteBranchActions extends ActionGroup {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private String myBranchName;
@NotNull private final GitRepository mySelectedRepository;
RemoteBranchActions(@NotNull Project project, @NotNull Collection<GitRepository> repositories, @NotNull String branchName,
RemoteBranchActions(@NotNull Project project, @NotNull List<GitRepository> repositories, @NotNull String branchName,
@NotNull GitRepository selectedRepository) {
super("", true);
myProject = project;
@@ -304,11 +303,11 @@ class GitBranchPopupActions {
private static class CheckoutRemoteBranchAction extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private final String myRemoteBranchName;
@NotNull private final GitRepository mySelectedRepository;
public CheckoutRemoteBranchAction(@NotNull Project project, @NotNull Collection<GitRepository> repositories,
public CheckoutRemoteBranchAction(@NotNull Project project, @NotNull List<GitRepository> repositories,
@NotNull String remoteBranchName, @NotNull GitRepository selectedRepository) {
super("Checkout as new local branch");
myProject = project;
@@ -339,12 +338,12 @@ class GitBranchPopupActions {
private static class CompareAction extends DumbAwareAction {
private final Project myProject;
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
private final String myBranchName;
private final GitRepository mySelectedRepository;
public CompareAction(@NotNull Project project,
@NotNull Collection<GitRepository> repositories,
@NotNull List<GitRepository> repositories,
@NotNull String branchName,
GitRepository selectedRepository) {
super("Compare");
@@ -24,15 +24,16 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* @author Kirill Likhodedov
*/
public class GitMultiRootBranchConfig {
private final Collection<GitRepository> myRepositories;
private final List<GitRepository> myRepositories;
public GitMultiRootBranchConfig(@NotNull Collection<GitRepository> repositories) {
public GitMultiRootBranchConfig(@NotNull List<GitRepository> repositories) {
myRepositories = repositories;
}