mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Hash is enough for GitResetOperation
This commit is contained in:
@@ -19,12 +19,15 @@ import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.vcs.log.Hash;
|
||||
import com.intellij.vcs.log.VcsFullCommitDetails;
|
||||
import git4idea.config.GitVcsSettings;
|
||||
import git4idea.repo.GitRepository;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GitResetAction extends GitOneCommitPerRepoLogAction {
|
||||
|
||||
@@ -39,7 +42,9 @@ public class GitResetAction extends GitOneCommitPerRepoLogAction {
|
||||
new Task.Backgroundable(project, "Git reset", true) {
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
new GitResetOperation(project, commits, selectedMode, indicator).execute();
|
||||
Map<GitRepository, Hash> hashes = commits.keySet().stream().collect(
|
||||
Collectors.toMap(Function.identity(), repo -> commits.get(repo).getId()));
|
||||
new GitResetOperation(project, hashes, selectedMode, indicator).execute();
|
||||
}
|
||||
}.queue();
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.vcs.log.VcsFullCommitDetails;
|
||||
import com.intellij.vcs.log.Hash;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.branch.GitBranchUiHandlerImpl;
|
||||
import git4idea.branch.GitSmartOperationDialog;
|
||||
@@ -55,15 +55,17 @@ import static git4idea.commands.GitLocalChangesWouldBeOverwrittenDetector.Operat
|
||||
public class GitResetOperation {
|
||||
|
||||
@NotNull private final Project myProject;
|
||||
@NotNull private final Map<GitRepository, VcsFullCommitDetails> myCommits;
|
||||
@NotNull private final Map<GitRepository, Hash> myCommits;
|
||||
@NotNull private final GitResetMode myMode;
|
||||
@NotNull private final ProgressIndicator myIndicator;
|
||||
@NotNull private final Git myGit;
|
||||
@NotNull private final VcsNotifier myNotifier;
|
||||
@NotNull private final GitBranchUiHandlerImpl myUiHandler;
|
||||
|
||||
public GitResetOperation(@NotNull Project project, @NotNull Map<GitRepository, VcsFullCommitDetails> targetCommits,
|
||||
@NotNull GitResetMode mode, @NotNull ProgressIndicator indicator) {
|
||||
public GitResetOperation(@NotNull Project project,
|
||||
@NotNull Map<GitRepository, Hash> targetCommits,
|
||||
@NotNull GitResetMode mode,
|
||||
@NotNull ProgressIndicator indicator) {
|
||||
myProject = project;
|
||||
myCommits = targetCommits;
|
||||
myMode = mode;
|
||||
@@ -78,10 +80,10 @@ public class GitResetOperation {
|
||||
AccessToken token = DvcsUtil.workingTreeChangeStarted(myProject);
|
||||
Map<GitRepository, GitCommandResult> results = ContainerUtil.newHashMap();
|
||||
try {
|
||||
for (Map.Entry<GitRepository, VcsFullCommitDetails> entry : myCommits.entrySet()) {
|
||||
for (Map.Entry<GitRepository, Hash> entry : myCommits.entrySet()) {
|
||||
GitRepository repository = entry.getKey();
|
||||
VirtualFile root = repository.getRoot();
|
||||
String target = entry.getValue().getId().asString();
|
||||
String target = entry.getValue().asString();
|
||||
GitLocalChangesWouldBeOverwrittenDetector detector = new GitLocalChangesWouldBeOverwrittenDetector(root, RESET);
|
||||
|
||||
GitCommandResult result = myGit.reset(repository, myMode, target, detector);
|
||||
|
||||
Reference in New Issue
Block a user