使用javahg获取远程存储库的最新版本

时间:2013-06-07 13:18:37

标签: mercurial javahg

在我们当前的Java项目中,我们想要将本地与alreay克隆的mercurial存储库的远程版本号进行比较,特别是我们希望从服务器获取最新的版本号。我们使用javahg来访问mercurial函数。但是我们在javahg库中找不到任何命令来实现它。

通常,您将使用identity命令,但此库中不支持此功能。另一种方法可能是使用支持的传入命令,但它似乎对我们不起作用。我们尝试执行以下代码行:

IncomingCommand.on(localRepo).execute(serverURL)

,结果包返回“-1”。在快速查看执行函数的源代码之后,我们发现此方法仅在本地存储库上运行。

有没有人知道如何使用传入命令从远程存储库获取最新版本?还是有另一种方法可以做到这一点吗?

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

传入命令下载包含本地不存在的远程变更集的“捆绑文件”。从Bundle实例,您可以使用getOverlayRepository()来获取可以调用任何其他命令的Repository实例。

Here是使用Incoming与远程存储库的一个例子:

Repository repoB = ..;
Bundle bundle = IncomingCommand.on(repoB).execute("http://localhost:" + port);
List<Changeset> changesets = bundle.getChangesets();
List<Changeset> heads = bundle.getOverlayRepository().heads();

我不确定'识别'的确切语义,但可能通过列出捆绑覆盖存储库的头部来实现类似的效果。

如果您只对节点ID感兴趣而不是对更改本身感兴趣,则识别似乎更有效。请随时在此处发布功能请求:https://bitbucket.org/aragost/javahg