Building the fork requires having SWI-Prolog installed on your
workstation to bootstrap the Prolog->Java compiler used by Prolog Cafe
to build itself. If you are building Gerrit Code Review, Maven will
download a pre-compiled Prolog Cafe JAR from our maven repository on
gerrit.googlecode.com, thereby avoiding the SWI-Prolog bootstrap
dependency.
[1] git://android.git.kernel.org/tools/prolog-cafe.git
[2] http://code.google.com/p/prolog-cafe/
[3] https://review.source.android.com/23526
A topic branch is a series of changes that need to be submitted
together, or not.
To determine if a topic branch can be submitted, isn't the logic something like:
for (Change change : changesInTopic) {
ChangeControl cc = changeControlFactory.controlFor(change);
cc.canSubmit();
}
That is, run the ChangeControl's canSubmit() logic to determine if the
change by itself is submittable. If all of the changes in the topic
are submittable, than so is the topic. Of course there is a recursive
definition here, a change shouldn't be submittable unless its topic is
submittable, so you may need to have a slightly modified version of
canSubmit on the change level that skips checking the containing
topic's submit status, or just ensure at a higher level that a change
on a topic cannot be submitted unless the topic is being submitted.