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/models/PathModel.java | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 43 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/gitblit/models/PathModel.java b/src/main/java/com/gitblit/models/PathModel.java index f894978..9093a44 100644 --- a/src/main/java/com/gitblit/models/PathModel.java +++ b/src/main/java/com/gitblit/models/PathModel.java @@ -17,6 +17,7 @@ import java.io.Serializable; +import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.lib.FileMode; @@ -58,6 +59,12 @@ public boolean isTree() { return FileMode.TREE.equals(mode); + } + + public boolean isFile() { + return FileMode.REGULAR_FILE.equals(mode) + || FileMode.EXECUTABLE_FILE.equals(mode) + || (FileMode.MISSING.equals(mode) && !isSymlink() && !isSubmodule() && !isTree()); } @Override @@ -107,11 +114,28 @@ private static final long serialVersionUID = 1L; public ChangeType changeType; - + + public int insertions; + + public int deletions; + public PathChangeModel(String name, String path, long size, int mode, String objectId, String commitId, ChangeType type) { super(name, path, size, mode, objectId, commitId); this.changeType = type; + } + + public void update(char op) { + switch (op) { + case '+': + insertions++; + break; + case '-': + deletions++; + break; + default: + break; + } } @Override @@ -123,5 +147,23 @@ public boolean equals(Object o) { return super.equals(o); } + + public static PathChangeModel from(DiffEntry diff, String commitId) { + PathChangeModel pcm; + if (diff.getChangeType().equals(ChangeType.DELETE)) { + pcm = new PathChangeModel(diff.getOldPath(), diff.getOldPath(), 0, diff + .getNewMode().getBits(), diff.getOldId().name(), commitId, diff + .getChangeType()); + } else if (diff.getChangeType().equals(ChangeType.RENAME)) { + pcm = new PathChangeModel(diff.getOldPath(), diff.getNewPath(), 0, diff + .getNewMode().getBits(), diff.getNewId().name(), commitId, diff + .getChangeType()); + } else { + pcm = new PathChangeModel(diff.getNewPath(), diff.getNewPath(), 0, diff + .getNewMode().getBits(), diff.getNewId().name(), commitId, diff + .getChangeType()); + } + return pcm; + } } } -- Gitblit v1.9.1