From 01fea7ef343ef1365b49bf3e763c0e26e6e3f554 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 9 Sep 2016 04:47:52 +0300 Subject: [PATCH] [git] remove duplication between loadDetails and readAllFullDetails --- .../src/git4idea/history/GitHistoryUtils.java | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java b/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java index 0ae2e92046c8..cdf7bb545276 100644 --- a/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java +++ b/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java @@ -572,16 +572,7 @@ public class GitHistoryUtils { } GitLineHandler h = new GitLineHandler(project, root, GitCommand.LOG); - GitLogParser.GitLogOption[] options = {HASH, COMMIT_TIME, AUTHOR_NAME, AUTHOR_TIME, AUTHOR_EMAIL, COMMITTER_NAME, COMMITTER_EMAIL, - PARENTS, SUBJECT, BODY, RAW_BODY}; - GitLogParser parser = new GitLogParser(project, GitLogParser.NameStatus.STATUS, options); - h.setStdoutSuppressed(true); - h.addParameters(parser.getPretty(), "--encoding=UTF-8"); - h.addParameters("-M", /*find and report renames*/ - "--name-status", - "-c" /*single diff for merge commits, only showing files that were modified from both parents*/); - h.addParameters(LOG_ALL); - h.endOptions(); + GitLogParser parser = createParserForDetails(h, project, false, true, ArrayUtil.toStringArray(LOG_ALL)); Ref parseError = new Ref<>(); Consumer recordConsumer = builder -> { @@ -880,18 +871,14 @@ public class GitHistoryUtils { }, parameters); } - @NotNull - public static List loadDetails(@NotNull final Project project, - @NotNull final VirtualFile root, - boolean withRefs, - boolean withChanges, - @NotNull NullableFunction converter, - String... parameters) - throws VcsException { - GitSimpleHandler h = new GitSimpleHandler(project, root, GitCommand.LOG); + private static GitLogParser createParserForDetails(@NotNull GitTextHandler h, + @NotNull Project project, + boolean withRefs, + boolean withChanges, + String... parameters) { GitLogParser.NameStatus status = withChanges ? GitLogParser.NameStatus.STATUS : GitLogParser.NameStatus.NONE; - GitLogParser.GitLogOption[] options = { HASH, COMMIT_TIME, AUTHOR_NAME, AUTHOR_TIME, AUTHOR_EMAIL, COMMITTER_NAME, COMMITTER_EMAIL, - PARENTS, SUBJECT, BODY, RAW_BODY }; + GitLogParser.GitLogOption[] options = {HASH, COMMIT_TIME, AUTHOR_NAME, AUTHOR_TIME, AUTHOR_EMAIL, COMMITTER_NAME, COMMITTER_EMAIL, + PARENTS, SUBJECT, BODY, RAW_BODY}; if (withRefs) { options = ArrayUtil.append(options, REF_NAMES); } @@ -903,10 +890,26 @@ public class GitHistoryUtils { h.addParameters("--decorate=full"); } if (withChanges) { - h.addParameters("-M", "--name-status", "-c"); + h.addParameters("-M", /*find and report renames*/ + "--name-status", + "-c" /*single diff for merge commits, only showing files that were modified from both parents*/); } h.endOptions(); + return parser; + } + + @NotNull + public static List loadDetails(@NotNull final Project project, + @NotNull final VirtualFile root, + boolean withRefs, + boolean withChanges, + @NotNull NullableFunction converter, + String... parameters) + throws VcsException { + GitSimpleHandler h = new GitSimpleHandler(project, root, GitCommand.LOG); + GitLogParser parser = createParserForDetails(h, project, withRefs, withChanges, parameters); + StopWatch sw = StopWatch.start("loading details"); String output = h.run(); sw.report();