Получить один файл из удаленного ртутного хранилища

Есть ли способ программно загрузить один файл из удаленного репозитория Mercurial в Java? Я задал очень похожий вопрос относительно git; теперь я надеюсь, что смогу сделать что-то подобное и с ртутным.

  • Я предпочитаю решение, которое использует как можно меньшую ширину полосы пропускания, желательно только загрузку этого одиночного файла. Мне не нужно просматривать репозиторий, у меня уже есть путь к файлу.
  • Меня не интересует история файла, я хочу только его последнюю версию.
  • Решение, которое печатает только файл на выходе, конечно же, отлично - на самом деле не нужно сохранять файл на диск, я могу сделать это сам.
  • Я предпочитаю решение, которое не зависит от других приложений (например, установка меркуриального клиента на машине). Оптимальной будет библиотека Java, которая содержит реализацию самого меркуриального клиента. Тем не менее, я с радостью вызову hg, если нет другого пути.

Из того, что я понимаю о том, как работает Mercurial, позволяя работать только с локальными репозиториями - это может оказаться проблематичным; но поскольку я был в состоянии сделать это с помощью аналогичного SC1 Git, я надеюсь, что есть решение для Mercurial.

Ответ 1

протокол меркуриальных проводов не имеет команды для чтения одного файла из удаленного репозитория. Поэтому клиент командной строки hg тоже не может этого сделать. Идея состоит в том, что вы всегда должны делать локальный клон для таких вещей.

Однако различные веб-интерфейсы для mercurial обычно имеют способ получить содержимое файла. Например, для репозиториев bitbucket URL-адрес выглядит следующим образом:

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

Для веб-интерфейса hg serve URL-адрес выглядит следующим образом:

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

Ответ 2

API-интерфейс BitBucket REST - это инструмент, который вы хотите для этого.

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 import HttpResponseNotAllowed, HttpResponseForbidden, HttpResponse, HttpResponseBadRequest из django.core....