Mercurial: получить информацию о репозиториях без их клонирования - PullRequest
12 голосов
/ 15 февраля 2012

Несколько дней назад я начал экспериментировать с Mercurial, и все прошло отлично, пока я не решил попробовать написать небольшую программу, которая получает список репозиториев и списки идентификаторов наборов изменений для каждого репозитория с удаленного сервера, что позволяет пользователю выбрать репозиторий и набор изменений, клонировать его и обновить до выбранной ревизии. Это привело к двум вопросам:

  1. Есть ли способ получить список хранилищ с сервера (кроме парсинга HTML)?
  2. Есть ли способ получить информацию, такую ​​как теги, ветки и т. Д., Об одном из репозиториев, без его клонирования в действительности?

1 Ответ

11 голосов
/ 15 февраля 2012

Нет, Mercurial разработан так, что вам нужен локальный репозиторий почти для всех команд. Единственная встроенная команда, которая даст вам информацию об удаленном репозитории, это hg id:

$ hg id https://bitbucket.org/aragost/javahg/
3b2711b26dbd

Чтобы получить больше информации, вы можете иногда использовать шаблон raw для hgweb:

$ wget -q -O - 'https://www.mercurial-scm.org/repo/hg/tags?style=raw' | head 
tip     a3a36bcf122e2ea4edbbe4ac44da59446cf0ee07
4.2.1   c850f0ed54c1d42f9aa079ad528f8127e5775217
4.2     bb96d4a497432722623ae60d9bc734a1e360179e
4.2-rc  616e788321cc4ae9975b7f0c54c849f36d82182b
4.1.3   77eaf9539499a1b8be259ffe7ada787d07857f80
4.1.2   ed5b25874d998ababb181a939dd37a16ea644435
4.1.1   25703b624d27e3917d978af56d6ad59331e0464a
4.1     e1526da1e6d84e03146151c9b6e6950fe9a83d7d
4.1-rc  a1dd2c0c479e0550040542e392e87bc91262517e
4.0.2   e69874dc1f4e142746ff3df91e678a09c6fc208c

Для этого требуется, чтобы на хосте выполнялся сценарий hgweb CGI, поставляемый с Mercurial. Для такого сайта, как Bitbucket, вам необходимо использовать их API .

Наконец, если вы можете включить расширения в удаленном репозитории, то можно написать расширение, предоставляющее нужную информацию в формате с возможностью анализа. Однажды я написал такое расширение как демо.

...