mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-25 08:12:40 +01:00
Use a "branchmap" call to identify remote branches in "arc-hg"
Summary: Ref T9948. Ref T13546. To identify remote branch heads -- not just modified heads -- use "branchmap" like "hg outgoing" does. I wasn't able to find any other way to get what we want: for example, with a bundlerepo, "peer.heads()" and "peer.changelog.heads()" include local branches which are not present in the remote. It generally seems difficult (perhaps impossible?) to distinguish between these cases by using "getremotechanges()": - branch X exists at position Y in both the local and remote; - branch X exists at positino Y in the local, but not the remote. In any case, this seems to work properly and //should// do less work than "getremotechanges()" since we don't need to pull as much data over the wire. Test Plan: Ran "hg arc-ls-markers" in various repositories, got what appeared to be a faithful representation of the remote branch and bookmark state. Maniphest Tasks: T13546, T9948 Differential Revision: https://secure.phabricator.com/D21349
This commit is contained in:
parent
488a24c40a
commit
86951ad067
1 changed files with 7 additions and 12 deletions
|
@ -159,21 +159,16 @@ def remotemarkers(ui, repo, source, opts):
|
||||||
source, branches = hg.parseurl(ui.expandpath(source))
|
source, branches = hg.parseurl(ui.expandpath(source))
|
||||||
remote = hg.peer(repo, opts, source)
|
remote = hg.peer(repo, opts, source)
|
||||||
|
|
||||||
bundle, remotebranches, cleanup = bundlerepo.getremotechanges(
|
with remote.commandexecutor() as e:
|
||||||
ui,
|
branchmap = e.callcommand('branchmap', {}).result()
|
||||||
repo,
|
|
||||||
remote)
|
|
||||||
|
|
||||||
try:
|
for branch_name in branchmap:
|
||||||
for n in remotebranches:
|
for branch_node in branchmap[branch_name]:
|
||||||
ctx = bundle[n]
|
|
||||||
markers.append({
|
markers.append({
|
||||||
'type': 'branch',
|
'type': 'branch',
|
||||||
'name': ctx.branch(),
|
'name': branch_name,
|
||||||
'node': node.hex(ctx.node()),
|
'node': node.hex(branch_node),
|
||||||
})
|
})
|
||||||
finally:
|
|
||||||
cleanup()
|
|
||||||
|
|
||||||
with remote.commandexecutor() as e:
|
with remote.commandexecutor() as e:
|
||||||
remotemarks = bookmarks.unhexlifybookmarks(e.callcommand('listkeys', {
|
remotemarks = bookmarks.unhexlifybookmarks(e.callcommand('listkeys', {
|
||||||
|
|
Loading…
Reference in a new issue