新しいオプションはJavaHgで、高レベルの Java API を提供します。単体テストは、それを使用してプログラミングする方法の良い例を示しています (JavaHg 0.1 以降):
public void commitTest() throws IOException {
Repository repo = getTestRepository();
writeFile("x", "abc");
CommitCommand commit = CommitCommand.on(repo);
StatusCommand status = StatusCommand.on(repo);
List<StatusLine> statusLines = status.lines();
Assert.assertEquals(1, statusLines.size());
Assert.assertEquals(StatusLine.Type.UNKNOWN, statusLines.get(0).getType());
AddCommand.on(repo).execute();
statusLines = status.lines();
Assert.assertEquals(1, statusLines.size());
Assert.assertEquals(StatusLine.Type.ADDED, statusLines.get(0).getType());
commit.message("Add a file").user("Martin Geisler");
Changeset cset = commit.execute();
Assert.assertEquals("Martin Geisler", cset.getUser());
statusLines = status.lines();
Assert.assertEquals(0, statusLines.size());
}
バージョン 1.9 以降に存在するMercurial コマンド サーバーと対話します。これは、複数のコマンドを受け入れる永続的な Mercurial プロセスが存在することを意味し、Mercurialの起動に通常伴う起動オーバーヘッドを回避します。MercurialEclipse の今後のバージョンで使用される予定です。(私は JavaHg の作成者の 1 人です。)