test-bundle2-pushback.t
120 lines
| 2.8 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) | ||||
Pierre-Yves David
|
r24686 | > if 'pushback' in op.reply.capabilities: | ||
Eric Sumner
|
r23439 | > params = {'namespace': 'bookmarks', | ||
> 'key': 'new-server-mark', | ||||
> 'old': '', | ||||
> 'new': 'tip'} | ||||
> encodedparams = [(k, pushkey.encode(v)) for (k,v) in params.items()] | ||||
Pierre-Yves David
|
r24686 | > op.reply.newpart('pushkey', mandatoryparams=encodedparams) | ||
Eric Sumner
|
r23439 | > else: | ||
Pierre-Yves David
|
r24686 | > op.reply.newpart('output', data='pushback not enabled') | ||
Eric Sumner
|
r23439 | > return result | ||
> _newhandlechangegroup.params = bundle2.handlechangegroup.params | ||||
Pierre-Yves David
|
r24686 | > bundle2.parthandlermapping['changegroup'] = _newhandlechangegroup | ||
Eric Sumner
|
r23439 | > EOF | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [ui] | ||||
Augie Fackler
|
r33262 | > 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] | ||||