【问题标题】:Interact with remote Mercurial and Git http repositories与远程 Mercurial 和 Git http 存储库交互
【发布时间】:2011-02-04 03:02:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: java git mercurial


    【解决方案1】:

    Mercurial 不适合在远程存储库上工作,除非是克隆、推送和拉取。也就是说,根据服务的方式,可以做很多事情。如果它是通过 hgweb 提供的,则内置的 Web 界面可用作 hg serve 有许多细节的 style=raw 视图,可以很容易地以编程方式处理。一些例子:

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

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

    【讨论】:

    • 谢谢。你碰巧知道 gitweb 是否有类似的原始输出格式?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2011-09-16
      • 2015-04-28
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多