If the two root trees are not equal, an initial call to {@link Consumer#tree(Node,Node)}will be made where the nodes will have {@link NodeRef#ROOT the root name} (i.e. emptystring), and provided the consumer indicates to continue with the traversal, further calls to {@link Consumer#feature}, {@link Consumer#tree}, and/or {@link Consumer#bucket} will be madeas changes between the two trees are found.
At any time, if {@link Consumer#tree} or {@link Consumer#bucket} returns {@code false}, that pair of trees won't be further evaluated and the traversal continues with their siblings or parents if there are no more siblings.
Note the {@code consumer} is only notified of nodes or buckets that differ, using{@code null} of either the left of right argument to indicate there's no matching object atthe left or right side of the comparison. Left side nulls indicate a new object, right side nulls a deleted one. None of the {@code Consumer} method is ever called with equal left andright arguments. @param consumer the callback object that gets notified of changes between the two trees andcan abort the walk for whole subtrees.
There's no dedicated constant for working copy parent, at least now. Use {@link HgRepository#WORKING_COPY} to indicate comparison shall be run against working copy parent. Although a bit confusing, single case doesn't justify a dedicated constant. @param baseRevision revision index to check against, or {@link HgRepository#WORKING_COPY}. Note, {@link HgRepository#TIP} is not supported. @param inspector callback to receive status information @throws IOException to propagate IO errors from {@link FileIterator} @throws CancelledException if operation execution was cancelled @throws HgRuntimeException subclass thereof to indicate issues with the library. Runtime exception
|
|