Browse Source

RevWalk: Discard uninteresting commits unless RevSort.BOUNDARY

Previously using an ObjectWalk meant uninteresting commits may keep
their commit message buffers in memory just in case they were found to
be on the boundary and were output as UNINTERESTING for the caller.

This was incorrect inside StartGenerator. ObjectWalk hides these
internal UNINTERESTING cases from its caller unless RevSort.BOUNDARY
was explicitly set, and its false by default. Callers never see one
of these saved uninteresting commits.

Change the test to allow early dispose unless the application has
explicitly asked for RevSort.BOUNDARY. This allows uninteresting
commit buffers to be discarded and garbage collected in ObjectWalks
when the caller will never be given the RevCommit.

Change-Id: Ic1419cc1d9ee95f4d09386dd0730d54c12dcc157
stable-4.1
Shawn Pearce 10 years ago
parent
commit
af7dcd6e1b
  1. 2
      org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java

2
org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java

@ -144,7 +144,7 @@ class StartGenerator extends Generator {
} else {
g = new PendingGenerator(w, pending, rf, pendingOutputType);
if (boundary) {
if (walker.hasRevSort(RevSort.BOUNDARY)) {
// Because the boundary generator may produce uninteresting
// commits we cannot allow the pending generator to dispose
// of them early.

Loading…
Cancel
Save