diff options
author | James Moger <james.moger@gitblit.com> | 2013-09-27 20:25:06 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-09-27 21:33:34 -0400 |
commit | 319342c09152c61af13930e79777e1396f9c397f (patch) | |
tree | 5918ec46da2814872c05d8b665ad6538af600caf /src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java | |
parent | b384a9923314ef0ab7ec0e9f506c8d52cc31f5fc (diff) | |
download | gitblit-319342c09152c61af13930e79777e1396f9c397f.tar.gz gitblit-319342c09152c61af13930e79777e1396f9c397f.zip |
Add normalized diffstats to the commit, commitdiff, and compare pages
Change-Id: I8f26746a611e9ab955efe8b2597cc81db48fb085
Diffstat (limited to 'src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java')
-rw-r--r-- | 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 a00e1076..8ca42854 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.IOException; 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 @@ public class GitBlitDiffFormatter extends DiffFormatter { private final OutputStream os;
- private int left, right;
+ private final DiffStat diffStat;
+
+ private PathChangeModel currentPath;
- public GitBlitDiffFormatter(OutputStream os) {
+ 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 @@ public class GitBlitDiffFormatter extends DiffFormatter { @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 @@ public class GitBlitDiffFormatter extends DiffFormatter { sb.append("</table></div>");
return sb.toString();
}
+
+ public DiffStat getDiffStat() {
+ return diffStat;
+ }
}
|