web-dev-qa-db-fra.com

Liste des branches distantes dans Mercurial

Existe-t-il un moyen de répertorier les branches distantes dans Mercurial comme dans Git?

git branch -r

Je veux lister les branches sur une machine distante (par exemple, Bitbucket), donc en utilisant:

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

échoue avec abandon: le référentiel n'est pas local

29
Raoul

Non, il n'est pas possible de répertorier les branches d'un référentiel distant sans le cloner en local.

S'il existe un accès SSH à la machine disposant du référentiel distant, vous pouvez utiliser directement Mercurial: ssh server hg -R path/to/repo branches.

Si le référentiel est servi avec hgweb, une liste de branches peut en être extraite, en utilisant le style brut pour une analyse facile: https://www.Mercurial-scm.org/repo/hg/branches?style=raw

BitBucket a sa propre API, où il est possible d’obtenir les branches, de voir leur aide et de faire une requête semblable à une URL telle que https://api.bitbucket.org/1.0/repositories/mirror/Mercurial /branches/

18
Erik Vest Zielke

L'API Mercurial permet:

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])

L'extrait ci-dessus produit:

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
18
gvalkov

Pour développer la réponse de @ gvalkov, vous pouvez en faire une véritable extension en écrivant un fichier 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))

Lorsqu'il est configuré dans ~/.hgrc avec

[extensions]
rheads = …/rheads.py

vous pouvez le lancer comme:

hg rheads

J'ai essayé d'en faire une commande pouvant être invoquée en dehors de tout référentiel, en spécifiant simplement l'URL en tant qu'argument, mais je n'ai pas réussi à faire en sorte que la syntaxe fonctionne:

commands.norepo += " rheads"
3
Jesse Glick

peut-être que vous recherchez hg incoming -B Cela a très bien fonctionné pour moi. Cela montre les signets.

2
A. K.

Veuillez noter que ceci n'affichera pas remote only branches, il affichera uniquement les branches dont votre référentiel local a connaissance.

En tant que seule question pertinente à apparaître lors de la recherche dans Google "branches de la liste de lignes de commande hg", j'ai pensé laisser cette question ici. Lorsque vous exécutez ce qui suit -

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

il sort;

branch:      branch1
branch:      branch2
branch:      branch3
branch:      branch4
branch:      branch5
0
Lewis