From 9bc17d16ea48a7978b198126d346828b1d24fe4e Mon Sep 17 00:00:00 2001 From: James Moger Date: Mon, 18 Apr 2011 22:29:20 -0400 Subject: Color-coded change type indicator with tooltip for changed paths. Also fixed /dev/null reference due to deletion change. --- src/com/gitblit/utils/JGitUtils.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/com/gitblit/utils/JGitUtils.java') diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index 49fbf1ef..b1267685 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -19,6 +19,7 @@ import java.util.Set; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffFormatter; import org.eclipse.jgit.diff.RawTextComparator; +import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; @@ -49,6 +50,7 @@ import org.slf4j.LoggerFactory; import com.gitblit.wicket.models.Metric; import com.gitblit.wicket.models.PathModel; +import com.gitblit.wicket.models.PathModel.PathChangeModel; import com.gitblit.wicket.models.RefModel; import com.gitblit.wicket.models.TicketModel; import com.gitblit.wicket.models.TicketModel.Comment; @@ -256,13 +258,13 @@ public class JGitUtils { return list; } - public static List getFilesInCommit(Repository r, String commitId) { + public static List getFilesInCommit(Repository r, String commitId) { RevCommit commit = getCommit(r, commitId); return getFilesInCommit(r, commit); } - public static List getFilesInCommit(Repository r, RevCommit commit) { - List list = new ArrayList(); + public static List getFilesInCommit(Repository r, RevCommit commit) { + List list = new ArrayList(); try { final RevWalk rw = new RevWalk(r); RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); @@ -283,7 +285,11 @@ public class JGitUtils { df.setDetectRenames(true); List diffs = df.scan(parentTree, commitTree); for (DiffEntry diff : diffs) { - list.add(new PathModel(diff.getNewPath(), diff.getNewPath(), 0, diff.getNewMode().getBits(), commit.getId().getName())); + if (diff.getChangeType().equals(ChangeType.DELETE)) { + list.add(new PathChangeModel(diff.getOldPath(), diff.getOldPath(), 0, diff.getNewMode().getBits(), commit.getId().getName(), diff.getChangeType())); + } else { + list.add(new PathChangeModel(diff.getNewPath(), diff.getNewPath(), 0, diff.getNewMode().getBits(), commit.getId().getName(), diff.getChangeType())); + } } } catch (Throwable t) { LOGGER.error("failed to determine files in commit!", t); -- cgit v1.2.3