From 1665ac9863e5366998beec19d0ed2f22334f25eb Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 6 Sep 2018 15:59:06 +0300 Subject: [PATCH] EA-118488 - NFE: GitAnnotationProvider.parseAnnotations Fix regression after conversion of GitSimpleHandler to GitLineHandler in dd934a2ca24c88abf4c79a7243073354388db721: CR, LF, CRLF line separators are silently converted to LF, breaking annotations parser. --- .../src/git4idea/annotate/GitAnnotationProvider.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/git4idea/src/git4idea/annotate/GitAnnotationProvider.java b/plugins/git4idea/src/git4idea/annotate/GitAnnotationProvider.java index c42976c791bb..ead3ea45d9ee 100644 --- a/plugins/git4idea/src/git4idea/annotate/GitAnnotationProvider.java +++ b/plugins/git4idea/src/git4idea/annotate/GitAnnotationProvider.java @@ -18,6 +18,7 @@ import com.intellij.openapi.vcs.annotate.FileAnnotation; import com.intellij.openapi.vcs.history.*; import com.intellij.openapi.vcs.vfs.VcsFileSystem; import com.intellij.openapi.vcs.vfs.VcsVirtualFile; +import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Interner; @@ -35,9 +36,8 @@ import git4idea.GitRevisionNumber; import git4idea.GitUtil; import git4idea.GitVcs; import git4idea.annotate.GitFileAnnotation.LineInfo; -import git4idea.commands.Git; +import git4idea.commands.GitBinaryHandler; import git4idea.commands.GitCommand; -import git4idea.commands.GitLineHandler; import git4idea.config.GitVcsApplicationSettings; import git4idea.config.GitVcsApplicationSettings.AnnotateDetectMovementsOption; import git4idea.history.GitFileHistory; @@ -145,7 +145,7 @@ public class GitAnnotationProvider implements AnnotationProviderEx { setProgressIndicatorText(GitBundle.message("computing.annotation", file.getName())); VirtualFile root = GitUtil.getGitRoot(repositoryFilePath); - GitLineHandler h = new GitLineHandler(myProject, root, GitCommand.BLAME); + GitBinaryHandler h = new GitBinaryHandler(myProject, root, GitCommand.BLAME); h.setStdoutSuppressed(true); h.addParameters("--porcelain", "-l", "-t"); h.addParameters("--encoding=UTF-8"); @@ -169,7 +169,7 @@ public class GitAnnotationProvider implements AnnotationProviderEx { } h.endOptions(); h.addRelativePaths(repositoryFilePath); - String output = Git.getInstance().runCommand(h).getOutputOrThrow(); + String output = new String(h.run(), CharsetToolkit.UTF8_CHARSET); GitFileAnnotation fileAnnotation = parseAnnotations(revision, file, root, output);