import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.internal.storage.pack.ObjectReuseAsIs;
-import org.eclipse.jgit.revwalk.ObjectWalk;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.revwalk.RevWalk;
/**
* Reads an {@link ObjectDatabase} for a single thread.
};
}
- /**
- * Advice from a {@link RevWalk} that a walk is starting from these roots.
- *
- * @param walk
- * the revision pool that is using this reader.
- * @param roots
- * starting points of the revision walk. The starting points have
- * their headers parsed, but might be missing bodies.
- * @throws IOException
- * the reader cannot initialize itself to support the walk.
- */
- public void walkAdviceBeginCommits(RevWalk walk, Collection<RevCommit> roots)
- throws IOException {
- // Do nothing by default, most readers don't want or need advice.
- }
-
- /**
- * Advice from an {@link ObjectWalk} that trees will be traversed.
- *
- * @param ow
- * the object pool that is using this reader.
- * @param min
- * the first commit whose root tree will be read.
- * @param max
- * the last commit whose root tree will be read.
- * @throws IOException
- * the reader cannot initialize itself to support the walk.
- */
- public void walkAdviceBeginTrees(ObjectWalk ow, RevCommit min, RevCommit max)
- throws IOException {
- // Do nothing by default, most readers don't want or need advice.
- }
-
- /** Advice from that a walk is over. */
- public void walkAdviceEnd() {
- // Do nothing by default, most readers don't want or need advice.
- }
-
/**
* Advise the reader to avoid unreachable objects.
* <p>
private BlockObjQueue pendingObjects;
- private RevCommit firstCommit;
-
- private RevCommit lastCommit;
-
private TreeVisit freeVisit;
private TreeVisit currVisit;
for (;;) {
final RevCommit r = super.next();
if (r == null) {
- if (firstCommit != null)
- reader.walkAdviceBeginTrees(this, firstCommit, lastCommit);
return null;
}
if ((r.flags & UNINTERESTING) != 0) {
return r;
continue;
}
- if (firstCommit == null)
- firstCommit = r;
- lastCommit = r;
pendingObjects.add(r.getTree());
return r;
}
for (;;) {
RevObject o = pendingObjects.next();
if (o == null) {
- reader.walkAdviceEnd();
return null;
}
int flags = o.flags;
public void dispose() {
super.dispose();
pendingObjects = new BlockObjQueue();
- firstCommit = null;
- lastCommit = null;
currVisit = null;
freeVisit = null;
}
rootObjects = new ArrayList<RevObject>();
pendingObjects = new BlockObjQueue();
- firstCommit = null;
- lastCommit = null;
currVisit = null;
freeVisit = null;
}