From 1c40c8af36d05ce0d2237f4645c37bdc5ef3febe Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 10 May 2018 13:03:01 +0300 Subject: [PATCH] IDEA-191309 git: update staging area using "git add -A" on commit Unify logic for deleted, new, modified, renamed, etc files. This prevents possible "Deleted-Unversioned" file status when we expected file to be removed, but it is actually a modification on disk. (ex: because pre-commit hook recreated a file that was deleted before) Use "-A" as a parameter for "addPaths", to unify logic between git versions. (This flag is set by default since git 2.0.0) --- .../checkin/GitCheckinEnvironment.java | 27 +++++++------------ .../src/git4idea/util/GitFileUtils.java | 7 +++-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java index 203a71586c4c..20f52b3e2470 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java @@ -646,26 +646,17 @@ public class GitCheckinEnvironment implements CheckinEnvironment { final Collection added, final Collection removed, final List exceptions) { - boolean rc = true; - if (!added.isEmpty()) { - try { - GitFileUtils.addPaths(project, root, added); - } - catch (VcsException ex) { - exceptions.add(ex); - rc = false; - } + try { + List files = new ArrayList<>(); + files.addAll(added); + files.addAll(removed); + GitFileUtils.addPaths(project, root, files); + return true; } - if (!removed.isEmpty()) { - try { - GitFileUtils.delete(project, root, removed, "--ignore-unmatch", "--cached"); - } - catch (VcsException ex) { - exceptions.add(ex); - rc = false; - } + catch (VcsException ex) { + exceptions.add(ex); + return false; } - return rc; } /** diff --git a/plugins/git4idea/src/git4idea/util/GitFileUtils.java b/plugins/git4idea/src/git4idea/util/GitFileUtils.java index 9ca9a04bf843..5d30a26d30d1 100644 --- a/plugins/git4idea/src/git4idea/util/GitFileUtils.java +++ b/plugins/git4idea/src/git4idea/util/GitFileUtils.java @@ -23,7 +23,10 @@ import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.vcsUtil.VcsFileUtil; import git4idea.GitUtil; -import git4idea.commands.*; +import git4idea.commands.Git; +import git4idea.commands.GitBinaryHandler; +import git4idea.commands.GitCommand; +import git4idea.commands.GitLineHandler; import git4idea.repo.GitRepository; import org.jetbrains.annotations.NotNull; @@ -126,7 +129,7 @@ public class GitFileUtils { continue; } GitLineHandler handler = new GitLineHandler(project, root, GitCommand.ADD); - handler.addParameters("--ignore-errors"); + handler.addParameters("--ignore-errors", "-A"); handler.endOptions(); handler.addParameters(paths); Git.getInstance().runCommand(handler).getOutputOrThrow();