Mercurial файл протокола - PullRequest
       9

Mercurial файл протокола

2 голосов
/ 19 февраля 2011

Есть ли у Mercurial протокол HTTP, по которому мы могли бы просматривать файлы / папки / ветви вместо клонов / вытягивать наборы изменений?

Я видел что-то с помощью TortoiseHG WebServer и доступ к http://localhost:8080/ с помощью браузера, но при использовании проекта на https://bitbucket.org/ предоставляется совершенно другой HTML (по крайней мере, я не смог найти то же представление).

Обновление HttpCommandProtocol описывает только наборы изменений, но не файлы / папки. Таким образом, задача состоит в том, чтобы загрузить только несколько файлов только для конкретной ревизии (например, с подсказкой 'stable') и список файлов. Однако я не хочу загружать полный репозиторий для этого.

Не HTTP-протоколы приветствуются, но условия те же: не загружать полный репозиторий.

Обновление 2 hgweb обслуживает статический HTML и файлы. Это всегда один и тот же HTML-код для разных версий hgweb? А как насчет bitbucket.org? Есть ли общий протокол?

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Как вы уже заметили, HttpCommandProtocol определяет обмен информацией о репозитории и наборами изменений - он гарантирует, что вы можете клонировать / выдвигать / извлекать из / в любое хранилище, обслуживаемое HTTP.Но AFAIK не существует стандарта для того, как просматривать репо (например, получать один файл определенной ревизии).

Вам нужно будет адаптироваться к любой схеме URL, которую использует выбранная вами хостинговая система (как вы также заметили), hgweb и bitbucket имеют разные схемы).В зависимости от вашего варианта использования вы можете определить свой собственный протокол доступа к файлам и передать его конвертеру.

Например, вы можете получить доступ к файлам по следующей схеме:

<repo-url>/<rev>/<path>

Где <repo-url> - это URL, который вы используете для клонирования / push / pull.На практике вы можете использовать такие URL-адреса:

https://bitbucket.org/user/repo/<rev>/<path>
https://hgwebhost.org/.../repo/<rev>/<path>

Очевидно, это виртуальные URL-адреса, которые не существуют.Вот где приходит ваш конвертер: проверьте тип хост-системы и соответственно конвертируйте URL:

https://bitbucket.org/user/repo/raw/<rev>/<path>
https://hgwebhost.org/.../repo/raw-file/<rev>/<path>

Если ваш конвертер знает bitbucket и hgweb , то он уже работаетс большим количеством хранилищ.

2 голосов
/ 02 марта 2011

Если вы просто зайдете в репозиторий hg и наберете

hg serve

у вас будет веб-сервер, прослушивающий URL-адрес, на который вы можете указать браузер. Форматирование веб-страниц, сгенерированных hg, можно изменить с помощью шаблонов. Весьма вероятно, что у bitbucket.org есть свои собственные причудливые шаблоны, поэтому у них есть более красивые веб-страницы.

Кроме того, для прослушивания можно использовать ссылку для прослушивания, также используя hg. На самом деле это тот же веб-сайт, который направляется через hgweb.cgi, а также основной механизм для выполнения push / pull по SSH.

2 голосов
/ 19 февраля 2011

У Mercurial есть hgweb.Его можно развернуть через любой контейнер wsgi, и я думаю, что он даже поддерживает CGI.

...