从远程mercurial存储库获取单个文件

问题描述 投票:10回答:2

有没有办法以编程方式从Java中的远程Mercurial存储库下载单个文件?我问了一个very similar question regarding git;现在我希望我也可以用mercurial做类似的事情。

  1. 我更喜欢使用尽可能少带宽的解决方案,最好只下载该单个文件。我不需要浏览存储库,我已经有了文件的路径。
  2. 我不关心文件的历史,我只想要它的最新版本。
  3. 当然,只将文件打印到输出的解决方案也很棒 - 它实际上不必将文件保存到磁盘,我自己也可以这样做。
  4. 我更喜欢不依赖于其他应用程序的解决方案(例如在机器上安装mercurial客户端)。包含mercurial客户端实现本身的Java库将是最佳的。但是,如果没有别的办法,我会高兴地援引hg

根据我对Mercurial如何工作的理解 - 允许仅针对本地存储库 - 这可能会成为问题;但是我能够用类似的Git SCM做到这一点,我希望Mercurial也有解决方案。

java mercurial
2个回答
10
投票

mercurial wire protocol没有从远程存储库读取单个文件的命令。这就是为什么hg命令行客户端也不能这样做的原因。这个想法是你应该总是为这样的东西做一个本地克隆。

但是,mercurial的各种Web界面通常都有一种获取文件内容的方法。例如,对于bitbucket存储库,URL如下所示:

http://bitbucket.org/<user>/<project>/raw/<revision>/<filename>

对于hg serve Web界面,URL如下所示:

http://<host>:<port>/raw-file/<revision>/<filename>

2
投票

Bitbucket REST API是您想要的工具。

https://api.bitbucket/1.0/repositories/{USER}/{REPO-NAME}/raw/tip/{PATH/TO/FILE}

他们的docs示例:

您可以获取原始文件,而不是将文件格式化为JSON:

$ curl https://api.bitbucket.org/1.0/repositories/jespern/django-piston/raw/tip/piston/utils.py从django.http导入时间导入HttpResponseNotAllowed,HttpResponseForbidden,HttpResponse,来自django.core的HttpResponseBadRequest ....

© www.soinside.com 2019 - 2024. All rights reserved.