test-bundle2-pushback.t
121 lines
| 2.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-bundle2-pushback.t
Gregory Szorc
|
r36235 | #testcases sshv1 sshv2 | ||
#if sshv2 | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [experimental] | ||||
> sshpeer.advertise-v2 = true | ||||
> sshserver.support-v2 = true | ||||
> EOF | ||||
#endif | ||||
Eric Sumner
|
r23439 | $ cat > bundle2.py << EOF | ||
> """A small extension to test bundle2 pushback parts. | ||||
> Current bundle2 implementation doesn't provide a way to generate those | ||||
> parts, so they must be created by extensions. | ||||
> """ | ||||
Augie Fackler
|
r33949 | > from __future__ import absolute_import | ||
> from mercurial import bundle2, exchange, pushkey, util | ||||
Eric Sumner
|
r23439 | > def _newhandlechangegroup(op, inpart): | ||
> """This function wraps the changegroup part handler for getbundle. | ||||
Pierre-Yves David
|
r24686 | > It issues an additional pushkey part to send a new | ||
Eric Sumner
|
r23439 | > bookmark back to the client""" | ||
> result = bundle2.handlechangegroup(op, inpart) | ||||
Pulkit Goyal
|
r38489 | > if b'pushback' in op.reply.capabilities: | ||
> params = {b'namespace': b'bookmarks', | ||||
> b'key': b'new-server-mark', | ||||
> b'old': b'', | ||||
> b'new': b'tip'} | ||||
FUJIWARA Katsunori
|
r41885 | > encodedparams = [(k, pushkey.encode(v)) | ||
> for (k, v) in params.items()] | ||||
Pulkit Goyal
|
r38489 | > op.reply.newpart(b'pushkey', mandatoryparams=encodedparams) | ||
Eric Sumner
|
r23439 | > else: | ||
Pulkit Goyal
|
r38489 | > op.reply.newpart(b'output', data=b'pushback not enabled') | ||
Eric Sumner
|
r23439 | > return result | ||
> _newhandlechangegroup.params = bundle2.handlechangegroup.params | ||||
Pulkit Goyal
|
r38489 | > bundle2.parthandlermapping[b'changegroup'] = _newhandlechangegroup | ||
Eric Sumner
|
r23439 | > EOF | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [ui] | ||||
Matt Harbison
|
r39743 | > ssh = "$PYTHON" "$TESTDIR/dummyssh" | ||
Eric Sumner
|
r23439 | > username = nobody <no.reply@example.com> | ||
> | ||||
> [alias] | ||||
> tglog = log -G -T "{desc} [{phase}:{node|short}]" | ||||
> EOF | ||||
Set up server repository | ||||
$ hg init server | ||||
$ cd server | ||||
$ echo c0 > f0 | ||||
$ hg commit -Am 0 | ||||
adding f0 | ||||
Set up client repository | ||||
$ cd .. | ||||
$ hg clone ssh://user@dummy/server client -q | ||||
$ cd client | ||||
Enable extension | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> bundle2=$TESTTMP/bundle2.py | ||||
> EOF | ||||
Without config | ||||
$ cd ../client | ||||
$ echo c1 > f1 | ||||
$ hg commit -Am 1 | ||||
adding f1 | ||||
$ hg push | ||||
pushing to ssh://user@dummy/server | ||||
searching for changes | ||||
remote: adding changesets | ||||
remote: adding manifests | ||||
remote: adding file changes | ||||
remote: added 1 changesets with 1 changes to 1 files | ||||
Pierre-Yves David
|
r25423 | remote: pushback not enabled | ||
Eric Sumner
|
r23439 | $ hg bookmark | ||
no bookmarks set | ||||
$ cd ../server | ||||
$ hg tglog | ||||
o 1 [public:2b9c7234e035] | ||||
| | ||||
@ 0 [public:6cee5c8f3e5b] | ||||
With config | ||||
$ cd ../client | ||||
$ echo '[experimental]' >> .hg/hgrc | ||||
$ echo 'bundle2.pushback = True' >> .hg/hgrc | ||||
$ echo c2 > f2 | ||||
$ hg commit -Am 2 | ||||
adding f2 | ||||
$ hg push | ||||
pushing to ssh://user@dummy/server | ||||
searching for changes | ||||
remote: adding changesets | ||||
remote: adding manifests | ||||
remote: adding file changes | ||||
remote: added 1 changesets with 1 changes to 1 files | ||||
$ hg bookmark | ||||
new-server-mark 2:0a76dfb2e179 | ||||
$ cd ../server | ||||
$ hg tglog | ||||
o 2 [public:0a76dfb2e179] | ||||
| | ||||
o 1 [public:2b9c7234e035] | ||||
| | ||||
@ 0 [public:6cee5c8f3e5b] | ||||