是否有一个简单的 API 可以从 Java 访问 Mercurial 存储库?
Netbeans 和 Eclipse 有插件,但与 Subversion 对应的插件不同,它们不使用通用的低级库,而是使用自己的包装器调用 Mercurial 二进制文件。调用二进制文件是可以的(目前),但在独立应用程序中使用这些插件似乎非常困难(在它们构建的 IDE 之外)。
还有 HgKit,但那是非常早期的。
最佳答案
一个新选项是JavaHg ,它为您提供了高级 Java API。 unit tests举一个很好的例子来说明它是如何编程的(从 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());
}
它与 Mercurial command server 交互存在于版本 1.9 及更高版本中。这意味着将有一个持续的 Mercurial 进程接受多个命令,因此您避免了通常与启动 Mercurial 相关的启动开销。我们预计它将在即将发布的 MercurialEclipse 版本中使用。 (我是 JavaHg 的作者之一。)
关于java - 用于 Java 的 Mercurial API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/380321/