diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/ObjectWalkTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/ObjectWalkTest.java index dfde7fcf2..9cbb1c875 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/ObjectWalkTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/ObjectWalkTest.java @@ -214,6 +214,21 @@ public void testCull() throws Exception { assertNull(objw.nextObject()); } + @Test + public void testMarkUninterestingPropagation() throws Exception { + final RevBlob f = blob("1"); + final RevTree t = tree(file("f", f)); + final RevCommit c1 = commit(t); + final RevCommit c2 = commit(t); + + markUninteresting(c1); + markStart(c2); + + assertSame(c2, objw.next()); + assertNull(objw.next()); + assertNull(objw.nextObject()); + } + @Test public void testEmptyTreeCorruption() throws Exception { ObjectId bId = ObjectId diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java index 730fde957..ef96b77c5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java @@ -232,7 +232,7 @@ public void markUninteresting(RevObject o) throws MissingObjectException, } if (o instanceof RevCommit) - super.markUninteresting((RevCommit) o); + markUninteresting((RevCommit) o); else if (o instanceof RevTree) markTreeUninteresting((RevTree) o); else @@ -242,6 +242,13 @@ else if (o instanceof RevTree) addObject(o); } + @Override + public void markUninteresting(RevCommit c) throws MissingObjectException, + IncorrectObjectTypeException, IOException { + super.markUninteresting(c); + markTreeUninteresting(c.getTree()); + } + @Override public void sort(RevSort s) { super.sort(s);