Hash is enough for GitResetOperation

This commit is contained in:
Kirill Likhodedov
2016-08-03 11:24:33 +03:00
parent 877b1dbff9
commit ca851de296
2 changed files with 14 additions and 7 deletions
@@ -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);