0

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

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

IncomingCommand.on(localRepo).execute(serverURL)

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

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

任何帮助表示赞赏。谢谢!

4

1 回答 1

0

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

下面是使用 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

于 2013-06-09T15:45:22.773 回答