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
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/
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
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"
peut-être que vous recherchez hg incoming -B
Cela a très bien fonctionné pour moi. Cela montre les signets.
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