From ceada41278dfd2c8150f8b7769d26a717edc19bb Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sun, 5 Oct 2014 16:50:54 +0400 Subject: [PATCH] [log] improve diagnostics Add previous refs Add information about VCS Fix commit count (it is multiplied by 5 just before reporting error) --- .../vcs/log/data/VcsLogRefresherImpl.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java index de218ab686d9..3345939d3ab3 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java @@ -243,8 +243,8 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } } // couldn't join => need to reload everything; if 5000 commits is still not enough, it's worth reporting: - LOG.error("Couldn't join " + commitCount + " recent commits to the log (" + permanentGraph.getAllCommits().size() + " commits)", - new Attachment("recent_commits", myLoadedInfo.toLogString(myHashMap.asIndexGetter()))); + LOG.error("Couldn't join " + commitCount / 5 + " recent commits to the log (" + permanentGraph.getAllCommits().size() + " commits)", + new Attachment("recent_commits", myLoadedInfo.toLogString(myHashMap.asIndexGetter(), currentRefs, myProviders))); } return loadFullLog(); @@ -398,6 +398,7 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } } + @SuppressWarnings("StringConcatenationInsideStringBufferAppend") private static class LogInfo { private final Map> myRefs = ContainerUtil.newHashMap(); private final Map>> myCommits = ContainerUtil.newHashMap(); @@ -428,13 +429,15 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { return myRefs.get(root); } - @SuppressWarnings("StringConcatenationInsideStringBufferAppend") @NotNull - public String toLogString(@NotNull final NotNullFunction indexGetter) { + public String toLogString(@NotNull final NotNullFunction indexGetter, + @NotNull Map> previousRefs, + @NotNull Map providers) { StringBuilder sb = new StringBuilder(); - sb.append(" LOG:\n"); + sb.append("LOG:\n"); for (Map.Entry>> entry : myCommits.entrySet()) { - sb.append(entry.getKey().getName() + "\n"); + VirtualFile root = entry.getKey(); + sb.append(String.format("%s (%s) \n", root.getName(), providers.get(root).getSupportedVcs().getName())); sb.append(StringUtil.join(entry.getValue(), new Function, String>() { @Override public String fun(@NotNull GraphCommit commit) { @@ -442,8 +445,17 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } }, "\n")); } - sb.append("\nREFS:\n"); - for (Map.Entry> entry : myRefs.entrySet()) { + sb.append("\nREFS:\n"); + printRefs(sb, indexGetter, myRefs); + sb.append("\nPREVIOUS REFS:\n"); + printRefs(sb, indexGetter, previousRefs); + return sb.toString(); + } + + private static void printRefs(@NotNull StringBuilder sb, + @NotNull final NotNullFunction indexGetter, + @NotNull Map> refs) { + for (Map.Entry> entry : refs.entrySet()) { sb.append(entry.getKey().getName() + "\n"); sb.append(StringUtil.join(entry.getValue(), new Function() { @Override @@ -452,7 +464,6 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } }, ",")); } - return sb.toString(); } } }