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/wicket/pages/CommitDiffPage.java |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
index eb67216..3bd759d 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
@@ -32,10 +32,11 @@
 
 import com.gitblit.Constants;
 import com.gitblit.GitBlit;
-import com.gitblit.models.PathModel.PathChangeModel;
 import com.gitblit.models.GitNote;
+import com.gitblit.models.PathModel.PathChangeModel;
 import com.gitblit.models.SubmoduleModel;
 import com.gitblit.utils.DiffUtils;
+import com.gitblit.utils.DiffUtils.DiffOutput;
 import com.gitblit.utils.DiffUtils.DiffOutputType;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.wicket.CacheControl;
@@ -43,6 +44,7 @@
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.CommitHeaderPanel;
 import com.gitblit.wicket.panels.CommitLegendPanel;
+import com.gitblit.wicket.panels.DiffStatPanel;
 import com.gitblit.wicket.panels.GravatarImage;
 import com.gitblit.wicket.panels.LinkPanel;
 import com.gitblit.wicket.panels.RefsPanel;
@@ -57,7 +59,7 @@
 
 		RevCommit commit = getCommit();
 
-		String diff = DiffUtils.getCommitDiff(r, commit, DiffOutputType.HTML);
+		final DiffOutput diff = DiffUtils.getCommitDiff(r, commit, DiffOutputType.HTML);
 
 		List<String> parents = new ArrayList<String>();
 		if (commit.getParentCount() > 0) {
@@ -79,6 +81,15 @@
 				WicketUtils.newObjectParameter(repositoryName, objectId)));
 
 		add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
+
+		// add commit diffstat
+		int insertions = 0;
+		int deletions = 0;
+		for (PathChangeModel pcm : diff.stat.paths) {
+			insertions += pcm.insertions;
+			deletions += pcm.deletions;
+		}
+		add(new DiffStatPanel("diffStat", insertions, deletions));
 
 		addFullText("fullMessage", commit.getFullMessage());
 
@@ -103,10 +114,8 @@
 		add(notesView.setVisible(notes.size() > 0));
 		
 		// changed paths list
-		List<PathChangeModel> paths = JGitUtils.getFilesInCommit(r, commit);
-
-		add(new CommitLegendPanel("commitLegend", paths));
-		ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(paths);
+		add(new CommitLegendPanel("commitLegend", diff.stat.paths));
+		ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(diff.stat.paths);
 		DataView<PathChangeModel> pathsView = new DataView<PathChangeModel>("changedPath", pathsDp) {
 			private static final long serialVersionUID = 1L;
 			int counter;
@@ -117,6 +126,7 @@
 				WicketUtils.setChangeTypeCssClass(changeType, entry.changeType);
 				setChangeTypeTooltip(changeType, entry.changeType);
 				item.add(changeType);
+				item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true));
 
 				boolean hasSubmodule = false;
 				String submodulePath = null;
@@ -172,7 +182,7 @@
 			}
 		};
 		add(pathsView);
-		add(new Label("diffText", diff).setEscapeModelStrings(false));
+		add(new Label("diffText", diff.content).setEscapeModelStrings(false));
 	}
 
 	@Override

--
Gitblit v1.9.1