diff options
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;
+ }
}
|