Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与远程Mercurial和Git http存储库交互_Java_Git_Mercurial - Fatal编程技术网

Java 与远程Mercurial和Git http存储库交互

Java 与远程Mercurial和Git http存储库交互,java,git,mercurial,Java,Git,Mercurial,背景:我正在编写一个Java服务器应用程序,它需要与通过http提供服务的远程SCM系统执行基本交互 是否可以使用某种预定义的API(或者如果通过http提供服务时这些存储库的布局有约定)从服务器与Mercurial和Git存储库进行交互,而无需克隆?唯一需要的交互方式是列出当前处于版本控制下的文件,以及能够下载版本控制文件的特定修订版 编辑:对于Mercurial,我使用了Ry4an的解决方案。对于Git,我会浏览使用gitweb提供服务的存储库的屏幕。Mercurial除了用于克隆、推送和拉

背景:我正在编写一个Java服务器应用程序,它需要与通过http提供服务的远程SCM系统执行基本交互

是否可以使用某种预定义的API(或者如果通过http提供服务时这些存储库的布局有约定)从服务器与Mercurial和Git存储库进行交互,而无需克隆?唯一需要的交互方式是列出当前处于版本控制下的文件,以及能够下载版本控制文件的特定修订版


编辑:对于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是否有类似的原始输出格式吗?