From 319342c09152c61af13930e79777e1396f9c397f Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 27 Sep 2013 21:33:34 -0400 Subject: [PATCH] Add normalized diffstats to the commit, commitdiff, and compare pages --- src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java index a00e107..8ca4285 100644 --- a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java +++ b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java @@ -23,12 +23,17 @@ import java.io.OutputStream; import java.text.MessageFormat; +import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffFormatter; import org.eclipse.jgit.diff.RawText; import org.eclipse.jgit.util.RawParseUtils; +import com.gitblit.models.PathModel.PathChangeModel; +import com.gitblit.utils.DiffUtils.DiffStat; + /** - * Generates an html snippet of a diff in Gitblit's style. + * Generates an html snippet of a diff in Gitblit's style, tracks changed paths, + * and calculates diff stats. * * @author James Moger * @@ -37,13 +42,24 @@ private final OutputStream os; - private int left, right; + private final DiffStat diffStat; - public GitBlitDiffFormatter(OutputStream os) { + private PathChangeModel currentPath; + + private int left, right; + + public GitBlitDiffFormatter(OutputStream os, String commitId) { super(os); this.os = os; + this.diffStat = new DiffStat(commitId); } - + + @Override + public void format(DiffEntry ent) throws IOException { + currentPath = diffStat.addPath(ent); + super.format(ent); + } + /** * Output a hunk header * @@ -109,6 +125,10 @@ @Override protected void writeLine(final char prefix, final RawText text, final int cur) throws IOException { + // update entry diffstat + currentPath.update(prefix); + + // output diff os.write("<tr>".getBytes()); switch (prefix) { case '+': @@ -209,4 +229,8 @@ sb.append("</table></div>"); return sb.toString(); } + + public DiffStat getDiffStat() { + return diffStat; + } } -- Gitblit v1.9.1