debugcommands: introduce debugpeer command
`hg debugpeer <path>` will establish a connection to a peer repository
and print information about it.
If you add --debug, it will log low-level protocol request info. This
will be useful for upcoming tests around protocol handshaking.
Differential Revision: https://phab.mercurial-scm.org/D2025
--- a/mercurial/debugcommands.py Sun Feb 04 12:47:37 2018 -0800
+++ b/mercurial/debugcommands.py Sat Feb 03 12:01:01 2018 -0800
@@ -1693,6 +1693,25 @@
ui.write('\n'.join(repo.pathto(p, cwd) for p in sorted(files)))
ui.write('\n')
+@command('debugpeer', [], _('PATH'), norepo=True)
+def debugpeer(ui, path):
+ """establish a connection to a peer repository"""
+ # Always enable peer request logging. Requires --debug to display
+ # though.
+ overrides = {
+ ('devel', 'debug.peer-request'): True,
+ }
+
+ with ui.configoverride(overrides):
+ peer = hg.peer(ui, {}, path)
+
+ local = peer.local() is not None
+ canpush = peer.canpush()
+
+ ui.write(_('url: %s\n') % peer.url())
+ ui.write(_('local: %s\n') % (_('yes') if local else _('no')))
+ ui.write(_('pushable: %s\n') % (_('yes') if canpush else _('no')))
+
@command('debugpickmergetool',
[('r', 'rev', '', _('check for files in this revision'), _('REV')),
('', 'changedelete', None, _('emulate merging change and delete')),
--- a/tests/test-completion.t Sun Feb 04 12:47:37 2018 -0800
+++ b/tests/test-completion.t Sat Feb 03 12:01:01 2018 -0800
@@ -102,6 +102,7 @@
debugnamecomplete
debugobsolete
debugpathcomplete
+ debugpeer
debugpickmergetool
debugpushkey
debugpvec
@@ -281,6 +282,7 @@
debugnamecomplete:
debugobsolete: flags, record-parents, rev, exclusive, index, delete, date, user, template
debugpathcomplete: full, normal, added, removed
+ debugpeer:
debugpickmergetool: rev, changedelete, include, exclude, tool
debugpushkey:
debugpvec:
--- a/tests/test-debugcommands.t Sun Feb 04 12:47:37 2018 -0800
+++ b/tests/test-debugcommands.t Sat Feb 03 12:01:01 2018 -0800
@@ -381,3 +381,24 @@
https
stream
v2
+
+Test debugpeer
+
+ $ hg --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" debugpeer ssh://user@dummy/debugrevlog
+ url: ssh://user@dummy/debugrevlog
+ local: no
+ pushable: yes
+
+ $ hg --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" --debug debugpeer ssh://user@dummy/debugrevlog
+ running "*" "*/tests/dummyssh" 'user@dummy' 'hg -R debugrevlog serve --stdio' (glob)
+ devel-peer-request: hello
+ sending hello command
+ devel-peer-request: between
+ devel-peer-request: pairs: 81 bytes
+ sending between command
+ remote: 384
+ remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN
+ remote: 1
+ url: ssh://user@dummy/debugrevlog
+ local: no
+ pushable: yes
--- a/tests/test-help.t Sun Feb 04 12:47:37 2018 -0800
+++ b/tests/test-help.t Sat Feb 03 12:01:01 2018 -0800
@@ -948,6 +948,7 @@
debugoptEXP (no help text available)
debugpathcomplete
complete part or all of a tracked path
+ debugpeer establish a connection to a peer repository
debugpickmergetool
examine which merge tool is chosen for specified file
debugpushkey access the pushkey key/value protocol