Как вы уже заметили, 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 , то он уже работаетс большим количеством хранилищ.