mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] util method for getting details synchronously
This commit is contained in:
@@ -3,9 +3,9 @@ package com.intellij.vcs.log.data;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.vcs.log.VcsFullCommitDetails;
|
||||
import com.intellij.vcs.log.VcsLogProvider;
|
||||
import com.intellij.vcs.log.impl.VcsLogUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -33,8 +33,6 @@ public class CommitDetailsGetter extends AbstractDataGetter<VcsFullCommitDetails
|
||||
@Override
|
||||
protected List<? extends VcsFullCommitDetails> readDetails(@NotNull VcsLogProvider logProvider, @NotNull VirtualFile root,
|
||||
@NotNull List<String> hashes) throws VcsException {
|
||||
List<VcsFullCommitDetails> result = ContainerUtil.newArrayList();
|
||||
logProvider.readFullDetails(root, hashes, result::add);
|
||||
return result;
|
||||
return VcsLogUtil.getDetails(logProvider, root, hashes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,12 +21,13 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vcs.FilePath;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.vcs.log.*;
|
||||
import com.intellij.vcs.log.data.LoadingDetails;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.graph.VisibleGraph;
|
||||
import com.intellij.vcs.log.ui.VcsLogUiImpl;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -36,6 +37,10 @@ import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.PatternSyntaxException;
|
||||
|
||||
import static com.intellij.util.ObjectUtils.notNull;
|
||||
import static com.intellij.util.containers.ContainerUtil.getFirstItem;
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
public class VcsLogUtil {
|
||||
public static final int MAX_SELECTED_COMMITS = 1000;
|
||||
|
||||
@@ -216,4 +221,19 @@ public class VcsLogUtil {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static VcsFullCommitDetails getDetails(@NotNull VcsLogData data, @NotNull VirtualFile root, @NotNull Hash hash)
|
||||
throws VcsException {
|
||||
return notNull(getFirstItem(getDetails(data.getLogProvider(root), root, singletonList(hash.asString()))));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<? extends VcsFullCommitDetails> getDetails(@NotNull VcsLogProvider logProvider,
|
||||
@NotNull VirtualFile root,
|
||||
@NotNull List<String> hashes) throws VcsException {
|
||||
List<VcsFullCommitDetails> result = ContainerUtil.newArrayList();
|
||||
logProvider.readFullDetails(root, hashes, result::add);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.vcs.log.*;
|
||||
import com.intellij.vcs.log.data.*;
|
||||
import com.intellij.vcs.log.impl.VcsLogUtil;
|
||||
import git4idea.GitRemoteBranch;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.config.GitSharedSettings;
|
||||
@@ -52,7 +53,6 @@ import static com.intellij.util.containers.ContainerUtil.getFirstItem;
|
||||
import static git4idea.GitUtil.HEAD;
|
||||
import static git4idea.GitUtil.getRepositoryManager;
|
||||
import static git4idea.reset.GitResetMode.SOFT;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static java.util.Collections.singletonMap;
|
||||
|
||||
public class GitUncommitAction extends DumbAwareAction {
|
||||
@@ -172,11 +172,11 @@ public class GitUncommitAction extends DumbAwareAction {
|
||||
GitSharedSettings settings = GitSharedSettings.getInstance(repository.getProject());
|
||||
// protected branches hold patterns for branch names without remote names
|
||||
return repository.getBranches().getRemoteBranches().stream().
|
||||
filter(it -> settings.isBranchProtected(it.getNameForRemoteOperations())).
|
||||
map(GitRemoteBranch::getNameForLocalOperations).
|
||||
filter(branches::contains).
|
||||
findAny().
|
||||
orElse(null);
|
||||
filter(it -> settings.isBranchProtected(it.getNameForRemoteOperations())).
|
||||
map(GitRemoteBranch::getNameForLocalOperations).
|
||||
filter(branches::contains).
|
||||
findAny().
|
||||
orElse(null);
|
||||
}
|
||||
|
||||
private static void resetInBackground(@NotNull VcsLogData data,
|
||||
@@ -218,9 +218,7 @@ public class GitUncommitAction extends DumbAwareAction {
|
||||
VirtualFile root = commit.getRoot();
|
||||
VcsFullCommitDetails details = getChangesFromCache(data, hash, root);
|
||||
if (details == null) {
|
||||
Ref<VcsFullCommitDetails> ref = new Ref<>();
|
||||
data.getLogProvider(root).readFullDetails(root, singletonList(hash.asString()), ref::set);
|
||||
details = ref.get();
|
||||
details = VcsLogUtil.getDetails(data, root, hash);
|
||||
}
|
||||
return details.getChanges();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user