From ca851de2961a09826293276db44fc6e13df23fa9 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sat, 23 Jul 2016 17:44:59 +0300 Subject: [PATCH] Hash is enough for GitResetOperation --- .../src/git4idea/reset/GitResetAction.java | 7 ++++++- .../src/git4idea/reset/GitResetOperation.java | 14 ++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/git4idea/src/git4idea/reset/GitResetAction.java b/plugins/git4idea/src/git4idea/reset/GitResetAction.java index 4c7bb49a7721..c5dd02fa72a5 100644 --- a/plugins/git4idea/src/git4idea/reset/GitResetAction.java +++ b/plugins/git4idea/src/git4idea/reset/GitResetAction.java @@ -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 hashes = commits.keySet().stream().collect( + Collectors.toMap(Function.identity(), repo -> commits.get(repo).getId())); + new GitResetOperation(project, hashes, selectedMode, indicator).execute(); } }.queue(); } diff --git a/plugins/git4idea/src/git4idea/reset/GitResetOperation.java b/plugins/git4idea/src/git4idea/reset/GitResetOperation.java index 97c795786528..2ff2704358db 100644 --- a/plugins/git4idea/src/git4idea/reset/GitResetOperation.java +++ b/plugins/git4idea/src/git4idea/reset/GitResetOperation.java @@ -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 myCommits; + @NotNull private final Map 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 targetCommits, - @NotNull GitResetMode mode, @NotNull ProgressIndicator indicator) { + public GitResetOperation(@NotNull Project project, + @NotNull Map 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 results = ContainerUtil.newHashMap(); try { - for (Map.Entry entry : myCommits.entrySet()) { + for (Map.Entry 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);