Подтвердить что ты не робот

Список удаленных веток в Mercurial

Есть ли способ перечислить удаленные ветки в Mercurial, как в Git?

git branch -r

Я хочу перечислить ветки на удаленном компьютере (например, Bitbucket), поэтому используя:

hg branches -R `hg showconfig paths.default` --color false

сбой прерывается: репозиторий не локальный

4b9b3361

Ответ 1

Нет, невозможно отобразить ветки удаленного репозитория без клонирования его локальным.

Если есть доступ SSH к машине, имеющей удаленный репозиторий, то Mercurial можно использовать напрямую: ssh server hg -R path/to/repo branches.

Если репозиторий обслуживается с помощью hgweb, из него можно извлечь список ветвей, используя исходный стиль для легкого разбора: https://www.mercurial-scm.org/repo/hg/branches?style=raw

BitBucket имеет свой собственный API, где можно получить ветки, см. их помощь и сделать запрос как URL-адрес, например https://api.bitbucket.org/1.0/repositories/mirror/mercurial/branches/

Ответ 2

Mercurial API позволяет это:

from mercurial import ui, hg, node

peer = hg.peer(ui.ui(), {}, 'http://hg.python.org/cpython')
for name, rev in peer.branchmap().items():
    print(name, node.short(rev[0]))

Приведенный фрагмент кода дает:

default aaa68dce117e
legacy-trunk b77918288f7d
3.2 4787b9b2f860
3.0 4cd9f5e89061
3.1 5a6fa1b8767f
2.3 364638d6434d
2.2 61b0263d6881
2.1 e849d484029f
2.0 5fd74354d73b
2.7 260f3ad7af4b
2.6 f130ce67387d
2.5 b48e1b48e670
2.4 ceec209b26d4

Ответ 3

Чтобы расширить ответ на @gvalkovs, вы можете сделать это реальным расширением, записав файл rheads.py:

from mercurial import hg, commands, cmdutil, node
cmdtable = {}
command = cmdutil.command(cmdtable)
@command('rheads', commands.remoteopts, 'hg rheads [SOURCE]')
def rheads(ui, repo, source='default', **opts):
    """print (possibly remote) heads

    Prints a series of lines consisting of hashes and branch names.
    Specify a local or remote repository, defaulting to the configured remote.
    """
    other = hg.peer(ui or repo, opts, ui.expandpath(source))
    for tag, heads in other.branchmap().iteritems():
        for h in heads:
            ui.write("%s %s\n" % (node.short(h), tag))

При настройке в ~/.hgrc с

[extensions]
rheads = …/rheads.py

вы можете запустить его, как:

hg rheads

Я попытался сделать его командой, которая может быть вызвана вне любого репозитория, просто указав URL как аргумент, но не смог заставить синтаксис работать:

commands.norepo += " rheads"

Ответ 4

Может быть, вы ищете hg incoming -B Это сработало для меня хорошо. Это показывает закладки.

Ответ 5

Обратите внимание, что это не будет отображать только удаленные ветки, а только те ветки, о которых знает ваш локальный репозиторий.

В качестве единственного улокального вопроса, возникающего при поиске "веток списка командной строки hg", я решил оставить это здесь. Когда вы запускаете следующее -

hg log | grep "branch" | grep -v "summary" | sort --unique

это выводит;

branch:      branch1
branch:      branch2
branch:      branch3
branch:      branch4
branch:      branch5