背景:我正在编写一个Java服务器应用程序,需要与通过http提供服务的远程SCM系统进行基本交互。
是否有可能使用某种预定义的API(或者,如果通过http提供这些存储库的方式有一个约定)从服务器与Mercurial和Git存储库进行交互而无需克隆?所需的唯一交互是列出当前受版本控制的文件以及下载版本控制文件的特定修订版的能力。
编辑:对于Mercurial,我使用了Ry4an的解决方案。对于Git,我刮掉了使用gitweb服务的存储库屏幕。
答案 0 :(得分:4)
除了克隆,推送和拉取之外,Mercurial不适用于远程存储库。也就是说,根据它的服务方式,可以做很多事情。如果它通过hgweb提供,内置的Web界面可用hg serve
,则可以通过编程方式轻松处理许多详细信息的style=raw
个视图。一些例子:
通过这些,您可以浏览文件,修订,标签和分支。
但是,如果你想写你最好在你的Java应用程序中运行Jython中的Mercurial并直接调用命令。
答案 1 :(得分:2)
Mercurial有两个Web API。一个你可能不应该使用。它专为Mercurial的其他实例设计,用于发送和接收变更集。
另一个可以通过普通的网络浏览器轻松访问。您看到的URL设计为清晰,易于解析或以编程方式组合在一起。正如@ Ry4an指出的那样,文件浏览器还能够为您提供任何文件的任何版本的原始(也就是逐字,没有HTML标签)副本。
尽管如此,你提出了一个有趣的观点。我认为Mercurial可以使用XML模板,在该模板中,它向您发送与Mercurial特定XML格式的页面相同的信息,这些格式旨在供程序使用。