mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user