From: James Moger Date: Wed, 18 Sep 2013 17:00:39 +0000 (-0400) Subject: Improve non-visible parent lane rendering for BranchGraphServlet X-Git-Tag: v1.4.0~267 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6de953137ce26e380f88b77876394d3c6fbdd766;p=gitblit.git Improve non-visible parent lane rendering for BranchGraphServlet --- diff --git a/src/main/java/com/gitblit/BranchGraphServlet.java b/src/main/java/com/gitblit/BranchGraphServlet.java index 95be6132..f46b8e6f 100644 --- a/src/main/java/com/gitblit/BranchGraphServlet.java +++ b/src/main/java/com/gitblit/BranchGraphServlet.java @@ -32,6 +32,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.imageio.ImageIO; import javax.servlet.ServletException; @@ -153,11 +155,31 @@ public class BranchGraphServlet extends HttpServlet { // determine the appropriate width for the image int numLanes = 0; - int numCommits = Math.min(requestedCommits, commitList.size()); - for (int i = 0; i < numCommits; i++) { + int numCommits = Math.min(requestedCommits, commitList.size()); + Set parents = new TreeSet(); + for (int i = 0; i < commitList.size(); i++) { PlotCommit commit = commitList.get(i); - int pos = commit.getLane().getPosition(); - numLanes = Math.max(numLanes, pos + 1); + boolean checkLane = false; + + if (i < numCommits) { + // commit in visible list + checkLane = true; + + // remember parents + for (RevCommit p : commit.getParents()) { + parents.add(p.getName()); + } + } else if (parents.contains(commit.getName())) { + // commit outside visible list, but it is a parent of a + // commit in the visible list so we need to know it's lane + // assignment + checkLane = true; + } + + if (checkLane) { + int pos = commit.getLane().getPosition(); + numLanes = Math.max(numLanes, pos + 1); + } } int graphWidth = numLanes * LANE_WIDTH + RIGHT_PAD; @@ -170,7 +192,7 @@ public class BranchGraphServlet extends HttpServlet { g = image.createGraphics(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); LanesRenderer renderer = new LanesRenderer(); - for (int i = 0; i < numCommits; i++) { + for (int i = 0; i < commitList.size(); i++) { PlotCommit commit = commitList.get(i); Graphics row = g.create(0, i*rowHeight, graphWidth, rowHeight); try {