tests/test-bundle2.t
branchstable
changeset 21184 28d76afa1568
parent 21183 4345274adc4b
child 21185 5b3717e1a3ea
equal deleted inserted replaced
21183:4345274adc4b 21184:28d76afa1568
    13   > from mercurial import util
    13   > from mercurial import util
    14   > from mercurial import bundle2
    14   > from mercurial import bundle2
    15   > from mercurial import scmutil
    15   > from mercurial import scmutil
    16   > from mercurial import discovery
    16   > from mercurial import discovery
    17   > from mercurial import changegroup
    17   > from mercurial import changegroup
       
    18   > from mercurial import error
    18   > cmdtable = {}
    19   > cmdtable = {}
    19   > command = cmdutil.command(cmdtable)
    20   > command = cmdutil.command(cmdtable)
    20   > 
    21   > 
    21   > ELEPHANTSSONG = """Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
    22   > ELEPHANTSSONG = """Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
    22   > Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
    23   > Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
    57   > @command('bundle2',
    58   > @command('bundle2',
    58   >          [('', 'param', [], 'stream level parameter'),
    59   >          [('', 'param', [], 'stream level parameter'),
    59   >           ('', 'unknown', False, 'include an unknown mandatory part in the bundle'),
    60   >           ('', 'unknown', False, 'include an unknown mandatory part in the bundle'),
    60   >           ('', 'parts', False, 'include some arbitrary parts to the bundle'),
    61   >           ('', 'parts', False, 'include some arbitrary parts to the bundle'),
    61   >           ('', 'reply', False, 'produce a reply bundle'),
    62   >           ('', 'reply', False, 'produce a reply bundle'),
       
    63   >           ('', 'pushrace', False, 'includes a check:head part with unknown nodes'),
    62   >           ('r', 'rev', [], 'includes those changeset in the bundle'),],
    64   >           ('r', 'rev', [], 'includes those changeset in the bundle'),],
    63   >          '[OUTPUTFILE]')
    65   >          '[OUTPUTFILE]')
    64   > def cmdbundle2(ui, repo, path=None, **opts):
    66   > def cmdbundle2(ui, repo, path=None, **opts):
    65   >     """write a bundle2 container on standard ouput"""
    67   >     """write a bundle2 container on standard ouput"""
    66   >     bundler = bundle2.bundle20(ui)
    68   >     bundler = bundle2.bundle20(ui)
    72   >             raise util.Abort('%s' % exc)
    74   >             raise util.Abort('%s' % exc)
    73   > 
    75   > 
    74   >     if opts['reply']:
    76   >     if opts['reply']:
    75   >         capsstring = 'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville'
    77   >         capsstring = 'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville'
    76   >         bundler.addpart(bundle2.bundlepart('b2x:replycaps', data=capsstring))
    78   >         bundler.addpart(bundle2.bundlepart('b2x:replycaps', data=capsstring))
       
    79   > 
       
    80   >     if opts['pushrace']:
       
    81   >         dummynode = '01234567890123456789'
       
    82   >         bundler.addpart(bundle2.bundlepart('b2x:check:heads', data=dummynode))
    77   > 
    83   > 
    78   >     revs = opts['rev']
    84   >     revs = opts['rev']
    79   >     if 'rev' in opts:
    85   >     if 'rev' in opts:
    80   >         revs = scmutil.revrange(repo, opts['rev'])
    86   >         revs = scmutil.revrange(repo, opts['rev'])
    81   >         if revs:
    87   >         if revs:
   130   >             unbundler = bundle2.unbundle20(ui, sys.stdin)
   136   >             unbundler = bundle2.unbundle20(ui, sys.stdin)
   131   >             op = bundle2.processbundle(repo, unbundler, lambda: tr)
   137   >             op = bundle2.processbundle(repo, unbundler, lambda: tr)
   132   >             tr.close()
   138   >             tr.close()
   133   >         except KeyError, exc:
   139   >         except KeyError, exc:
   134   >             raise util.Abort('missing support for %s' % exc)
   140   >             raise util.Abort('missing support for %s' % exc)
       
   141   >         except error.PushRaced, exc:
       
   142   >             raise util.Abort('push race')
   135   >     finally:
   143   >     finally:
   136   >         if tr is not None:
   144   >         if tr is not None:
   137   >             tr.release()
   145   >             tr.release()
   138   >         lock.release()
   146   >         lock.release()
   139   >         remains = sys.stdin.read()
   147   >         remains = sys.stdin.read()
   598   remote: debugreply:         'celeste'
   606   remote: debugreply:         'celeste'
   599   remote: debugreply:     'ping-pong'
   607   remote: debugreply:     'ping-pong'
   600   remote: received ping request (id 6)
   608   remote: received ping request (id 6)
   601   remote: replying to ping request (id 6)
   609   remote: replying to ping request (id 6)
   602   0 unread bytes
   610   0 unread bytes
       
   611 
       
   612 Test push race detection
       
   613 
       
   614   $ hg bundle2 --pushrace ../part-race.hg2
       
   615 
       
   616   $ hg unbundle2 < ../part-race.hg2
       
   617   0 unread bytes
       
   618   abort: push race
       
   619   [255]
   603 
   620 
   604 Support for changegroup
   621 Support for changegroup
   605 ===================================
   622 ===================================
   606 
   623 
   607   $ hg unbundle $TESTDIR/bundles/rebase.hg
   624   $ hg unbundle $TESTDIR/bundles/rebase.hg