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