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

发布于 2024-10-15 12:31:18 字数 282 浏览 2 评论 0 原文

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

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

编辑: 对于 Mercurial,我使用了 Ry4an 的解决方案。对于 Git,我抓取使用 gitweb 提供的存储库的屏幕。

Background: I'm writing a Java server application that needs to perform basic interactions with remote SCM systems served over http.

Is it possible to interact with Mercurial and Git repositories using some sort of predefined API (or if there is a convention to how these repositories are laid out when served via http) from the server without having to clone? The only sort of interactions needed are listing of files currently under version control and the ability to download particular revisions of a version controlled file.

EDIT: For Mercurial, I used Ry4an's solution. For Git, I scrape the screens of repositories served using gitweb.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往事随风而去 2024-10-22 12:31:18

除了克隆、推送和拉取之外,Mercurial 不适用于远程存储库。也就是说,根据服务的方式,人们可以做很多事情。如果通过 hgweb 提供服务,则内置 Web 界面可用作 hgserve,其中有许多详细信息的 style=raw 视图,可以通过编程轻松处理。一些示例:

使用它们,您可以浏览文件、修订、标签和分支。

但是,如果您想编写,最好在 Java 应用程序中的 Jython 中运行 Mercurial 并直接调用命令。

Mercurial isn't designed to work on remote repositories except to clone, push, and pull. That said, there's a lot one can do depending how it's served. If it's being served through hgweb, the built in web interface available as hg serve there are style=raw views of many details which can be easily handled programmatically. Some examples:

With those you can browse files, revision, tags, and branches.

If, however, you want to write you're best off running Mercurial in Jython in your Java app and invoking the commands directly.

行至春深 2024-10-22 12:31:18

Mercurial 有两个 Web API。您可能不应该使用它。它专为 Mercurial 的其他实例设计,用于发送和接收变更集。

另一个可以通过普通的网络浏览器轻松访问。您看到的 URL 设计得清晰且易于以编程方式解析或组合在一起。正如 @Ry4an 指出的,文件浏览器还能够为您提供任何文件的任何版本的原始(也称为逐字,没有 HTML 标签)副本。

不过,你提出了一个有趣的观点。我认为 Mercurial 可以使用 XML 模板,在该模板中,它向您发送与设计供程序使用的 Mercurial 特定 XML 格式的页面相同的信息。

Mercurial has two web APIs. One you probably shouldn't use. It's designed for other instances of Mercurial to use to send and receive changesets.

The other is easily accessible via an ordinary web browser. The URLs you see are designed to be clear and easy to parse or put together programatically. As @Ry4an points out, the file browser also has the ability to give you a raw (aka verbatim, with no HTML tags) copy of any version of any file.

Though, you raise an interesting point. I think Mercurial could use an XML template in which it sends you the same information as the pages in a Mercurial specific XML format that's designed to be used by programs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文