Получить один файл из удаленного ртутного хранилища
Есть ли способ программно загрузить один файл из удаленного репозитория 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....