背景:我正在编写一个 Java 服务器应用程序,需要与通过 http 提供服务的远程 SCM 系统执行基本交互。
是否可以使用某种预定义的 API(或者这些存储库在通过 http 提供服务时如何布局)从服务器与 Mercurial 和 Git 存储库进行交互,而无需克隆?唯一需要的交互是列出当前受版本控制的文件以及下载版本控制文件的特定修订版的能力。
编辑:对于 Mercurial,我使用了 Ry4an 的解决方案。对于 Git,我抓取使用 gitweb 提供的存储库的屏幕。
最佳答案
Mercurial 不适用于远程存储库,除了克隆、推送和 pull 之外。也就是说,根据服务的方式,人们可以做很多事情。如果通过 hgweb 提供服务,则内置 Web 界面可用作 hgserve
,其中有许多详细信息的 style=raw
View ,可以通过编程轻松处理。一些例子:
- https://www.mercurial-scm.org/repo/hg/file/tip?style=raw
- https://www.mercurial-scm.org/repo/hg/file/tip/README?style=raw
- https://www.mercurial-scm.org/repo/hg/rev/8f5c865b7b4a?style=raw
- https://www.mercurial-scm.org/repo/hg/raw-rev/8f5c865b7b4a
- https://www.mercurial-scm.org/repo/hg/tags?style=raw
- https://www.mercurial-scm.org/repo/hg/branches?style=raw
使用它们,您可以浏览文件、修订版本、标签和分支。
但是,如果您想要编写,最好在 Java 应用程序中的 Jython 中运行 Mercurial 并直接调用命令。
关于java - 与远程 Mercurial 和 Git http 存储库交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894151/