##// END OF EJS Templates
httppeer: implement command executor for version 2 peer...
httppeer: implement command executor for version 2 peer Now that we have a new API for issuing commands which is compatible with wire protocol version 2, we can start using it with wire protocol version 2. This commit replaces our hacky implementation of _call() with something a bit more robust based on the new command executor interface. We now have proper support for issuing multiple commands per HTTP request. Each HTTP request maintains its own client reactor. The implementation is similar to the one in the legacy wire protocol. We use a ThreadPoolExecutor for spinning up a thread to read the HTTP response in the background. This allows responses to resolve in any order. While not implemented on the server yet, a client could use concurrent.futures.as_completed() with a collection of futures and handle responses as they arrive from the server. The return value from issued commands is still a simple list of raw or decoded CBOR data. This is still super hacky. We will want a rich data type for representing command responses. But at least this commit gets us one step closer to a proper peer implementation. Differential Revision: https://phab.mercurial-scm.org/D3297

File last commit:

r26780:bbf544b5 default
r37669:950294e2 default
Show More
test-mq-qgoto.t
93 lines | 1.4 KiB | text/troff | Tads3Lexer
Adrian Buehlmann
tests: unify some of test-mq*
r12324 $ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ hg init a
$ cd a
$ echo a > a
$ hg ci -Ama
adding a
$ hg qnew a.patch
$ echo a >> a
$ hg qrefresh
$ hg qnew b.patch
$ echo b > b
$ hg add b
$ hg qrefresh
$ hg qnew c.patch
$ echo c > c
$ hg add c
$ hg qrefresh
$ hg qgoto a.patch
popping c.patch
popping b.patch
now at: a.patch
$ hg qgoto c.patch
applying b.patch
applying c.patch
now at: c.patch
$ hg qgoto b.patch
popping c.patch
now at: b.patch
Using index:
$ hg qgoto 0
popping b.patch
now at: a.patch
$ hg qgoto 2
applying b.patch
applying c.patch
now at: c.patch
Mads Kiilerich
mq: fix qpop of working directory parent patch when not at qtip...
r18342 No warnings when using index ... and update from non-qtip and with pending
changes in unrelated files:
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg qnew bug314159
$ echo d >> c
$ hg qrefresh
$ hg qnew bug141421
Mads Kiilerich
mq: fix qpop of working directory parent patch when not at qtip...
r18342 $ echo e >> b
Adrian Buehlmann
tests: unify some of test-mq*
r12324 $ hg qrefresh
Mads Kiilerich
mq: fix qpop of working directory parent patch when not at qtip...
r18342 $ hg up -r bug314159
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo f >> a
$ echo f >> b
$ echo f >> c
Adrian Buehlmann
tests: unify some of test-mq*
r12324 $ hg qgoto 1
timeless@mozdev.org
mq: consistently use qrefresh
r26780 abort: local changes found, qrefresh first
Mads Kiilerich
mq: fix qpop of working directory parent patch when not at qtip...
r18342 [255]
$ hg qgoto 1 -f
Adrian Buehlmann
tests: unify some of test-mq*
r12324 popping bug141421
popping bug314159
popping c.patch
now at: b.patch
Mads Kiilerich
mq: fix qpop of working directory parent patch when not at qtip...
r18342 $ hg st
M a
M b
? c.orig
$ hg up -qCr.
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg qgoto 3
applying c.patch
applying bug314159
now at: bug314159
Detect ambiguous non-index:
$ hg qgoto 14
patch name "14" is ambiguous:
bug314159
bug141421
abort: patch 14 not in series
[255]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..