PlotCommitList: Close plot lanes at root commits

Bug: 443006
Change-Id: I40b1eb044fa2d9e6c5d4b956c17e32ca6c1bd39f
Signed-off-by: Konrad Kügler <swamblumat-eclipsebugs@yahoo.de>
This commit is contained in:
Konrad Kügler 2014-09-01 21:09:59 +02:00 committed by Robin Stocker
parent 3885ce2a94
commit 9ac59efbbd
2 changed files with 43 additions and 5 deletions

View File

@ -668,4 +668,42 @@ public void testDanglingCommitShouldContinueLane() throws Exception {
new PlotLane[] { laneB }, test.current.passingLanes);
test.noMoreCommits();
}
@Test
public void testTwoRoots1() throws Exception {
final RevCommit a = commit();
final RevCommit b = commit();
PlotWalk pw = new PlotWalk(db);
pw.markStart(pw.lookupCommit(a));
pw.markStart(pw.lookupCommit(b));
PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
pcl.source(pw);
pcl.fillTo(Integer.MAX_VALUE);
CommitListAssert test = new CommitListAssert(pcl);
test.commit(b).lanePos(0);
test.commit(a).lanePos(0);
test.noMoreCommits();
}
@Test
public void testTwoRoots2() throws Exception {
final RevCommit a = commit();
final RevCommit b1 = commit();
final RevCommit b2 = commit(b1);
PlotWalk pw = new PlotWalk(db);
pw.markStart(pw.lookupCommit(a));
pw.markStart(pw.lookupCommit(b2));
PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
pcl.source(pw);
pcl.fillTo(Integer.MAX_VALUE);
CommitListAssert test = new CommitListAssert(pcl);
test.commit(b2).lanePos(0);
test.commit(b1).lanePos(0);
test.commit(a).lanePos(0);
test.noMoreCommits();
}
}

View File

@ -128,11 +128,8 @@ protected void enter(final int index, final PlotCommit<L> currCommit) {
final int nChildren = currCommit.getChildCount();
if (nChildren == 0) {
currCommit.lane = nextFreeLane();
continueActiveLanes(currCommit);
return;
}
if (nChildren == 1 && currCommit.children[0].getParentCount() < 2) {
} else if (nChildren == 1
&& currCommit.children[0].getParentCount() < 2) {
// Only one child, child has only us as their parent.
// Stay in the same lane as the child.
@ -195,7 +192,10 @@ protected void enter(final int index, final PlotCommit<L> currCommit) {
closeLane(c.lane);
}
}
continueActiveLanes(currCommit);
if (currCommit.getParentCount() == 0)
closeLane(currCommit.lane);
}
private void continueActiveLanes(final PlotCommit currCommit) {