一个新选项是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 的作者之一。)