- Loading...
The JDK 9 project is experimenting with the idea of Submission Forests. A Submission Forest allows committers to submit a change for automatic build, test and integration with an upstream forest. Initially we have created a jdk9/hs-submit
forest which integrates to jdk9/hs
. This will allow non-Oracle committers to make changes to jdk9/hs
directly while still observing the Hotspot team's conventions for pre-integration build & test. Of course all the usual rules about who may make changes and how they are reviewed and approved still apply.
Submission Forests are modeled after the JDK9 Sandbox Forest. The default branch of the Submission Forest is kept in sync with the upstream forest. Committers do their work on branches with one branch used per fix. When a branch is pushed to the Submission Forest, it is automatically run through a pre-defined set of builds and tests. If this succeeds, the changes on the branch are moved as a single changeset to the default branch of the upstream forest. If a branch fails to build, pass tests or merge successfully into the upstream forest, no changes are made upstream. At the end of the process a status email is sent to the committer.
The finer points of Submission Forests are covered in the FAQ below. The jdk9/hs-submit forest will be maintained by <Duke>. If you have problems, please send mail to <hs-dev@openjdk.java.net>
Say you need to make a simple fix to the README file at the head of the hotspot repository. This fix addresses bug JDK-7000001. The following would do it:
% hg tclone --branch default http://hg.openjdk.java.net/jdk9/hs-submit % cd hs-submit/hotspot % hg branch "JDK-7000001" % echo "Make the README longer." >> README % % # Get code review here % % hg commit -l msg.txt % hg push --new-branch
To get started, make a clone of the submission forest using your favorite method. In these examples we use the Mercurial trees extension. You may find it convenient to clone only the default branch.
% hg tclone --branch default http://hg.openjdk.java.net/jdk9/hs-submit
We recommend you name your branch with the bug id of your fix. Since Mercurial branch names can't begin with a number, use the full bug id like "JDK-4040458"
\[ Should we recommend the empty changeset for every tree like they do in the sandbox forest? What happens to our automation if empty changesets are pushed?\]
Changes from the upstream forest are pulled into the submission forest automatically. You can keep your work on a fix branch in sync with what's going on upstream by simply merging in changes from the default branch.
Jcheck is not enabled for the submission forest; however, it generally is enabled for the upstream forest. If so, your change must pass jcheck when it is merged with the upstream forest.
The commit message for the changeset at the head of your branch is used as the commit message for the changeset that is integrated to the default branch of the upstream forest.
Once your branch has been integrated upstream, it will automatically be closed.
Branches are intended to be used for a single fix. They are automatically closed once the branch is integrated upstream and should not be reopened.