tests/test-wireproto-exchangev2.t
changeset 48526 04688c51f81f
parent 48525 d6c53b40b078
child 48527 bf5dc156bb4c
equal deleted inserted replaced
48525:d6c53b40b078 48526:04688c51f81f
     1 Tests for wire protocol version 2 exchange.
       
     2 Tests in this file should be folded into existing tests once protocol
       
     3 v2 has enough features that it can be enabled via #testcase in existing
       
     4 tests.
       
     5 
       
     6   $ . $TESTDIR/wireprotohelpers.sh
       
     7   $ enablehttpv2client
       
     8 
       
     9   $ hg init server-simple
       
    10   $ enablehttpv2 server-simple
       
    11   $ cd server-simple
       
    12   $ cat >> .hg/hgrc << EOF
       
    13   > [phases]
       
    14   > publish = false
       
    15   > EOF
       
    16   $ echo a0 > a
       
    17   $ echo b0 > b
       
    18   $ hg -q commit -A -m 'commit 0'
       
    19 
       
    20   $ echo a1 > a
       
    21   $ hg commit -m 'commit 1'
       
    22   $ hg phase --public -r .
       
    23   $ echo a2 > a
       
    24   $ hg commit -m 'commit 2'
       
    25 
       
    26   $ hg -q up -r 0
       
    27   $ echo b1 > b
       
    28   $ hg -q commit -m 'head 2 commit 1'
       
    29   $ echo b2 > b
       
    30   $ hg -q commit -m 'head 2 commit 2'
       
    31 
       
    32   $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
       
    33   $ cat hg.pid > $DAEMON_PIDS
       
    34 
       
    35   $ cd ..
       
    36 
       
    37 Test basic clone
       
    38 
       
    39 Output is flaky, save it in a file and check part independently
       
    40   $ hg --debug clone -U http://localhost:$HGPORT client-simple > clone-output
       
    41 
       
    42   $ cat clone-output | grep -v "received frame"
       
    43   using http://localhost:$HGPORT/
       
    44   sending capabilities command
       
    45   query 1; heads
       
    46   sending 2 commands
       
    47   sending command heads: {}
       
    48   sending command known: {
       
    49     'nodes': []
       
    50   }
       
    51   sending 1 commands
       
    52   sending command changesetdata: {
       
    53     'fields': set([
       
    54       'bookmarks',
       
    55       'parents',
       
    56       'phase',
       
    57       'revision'
       
    58     ]),
       
    59     'revisions': [
       
    60       {
       
    61         'heads': [
       
    62           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
    63           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
    64         ],
       
    65         'roots': [],
       
    66         'type': 'changesetdagrange'
       
    67       }
       
    68     ]
       
    69   }
       
    70   add changeset 3390ef850073
       
    71   add changeset 4432d83626e8
       
    72   add changeset cd2534766bec
       
    73   add changeset e96ae20f4188
       
    74   add changeset caa2a465451d
       
    75   checking for updated bookmarks
       
    76   sending 1 commands
       
    77   sending command manifestdata: {
       
    78     'fields': set([
       
    79       'parents',
       
    80       'revision'
       
    81     ]),
       
    82     'haveparents': True,
       
    83     'nodes': [
       
    84       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
    85       '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8',
       
    86       '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
       
    87       '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
       
    88       '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
       
    89     ],
       
    90     'tree': ''
       
    91   }
       
    92   sending 1 commands
       
    93   sending command filesdata: {
       
    94     'fields': set([
       
    95       'parents',
       
    96       'revision'
       
    97     ]),
       
    98     'haveparents': True,
       
    99     'revisions': [
       
   100       {
       
   101         'nodes': [
       
   102           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   103           'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0',
       
   104           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
       
   105           '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
       
   106           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
       
   107         ],
       
   108         'type': 'changesetexplicit'
       
   109       }
       
   110     ]
       
   111   }
       
   112   updating the branch cache
       
   113   new changesets 3390ef850073:caa2a465451d (3 drafts)
       
   114   updating the branch cache
       
   115   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   116 
       
   117   $ cat clone-output | grep "received frame"
       
   118   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   119   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   120   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   121   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   122   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   123   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   124   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   125   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   126   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   127   received frame(size=941; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   128   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   129   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   130   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   131   received frame(size=992; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   132   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   133   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   134   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   135   received frame(size=901; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   136   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   137 
       
   138   $ rm clone-output
       
   139 
       
   140 All changesets should have been transferred
       
   141 
       
   142   $ hg -R client-simple debugindex -c
       
   143      rev linkrev nodeid       p1           p2
       
   144        0       0 3390ef850073 000000000000 000000000000
       
   145        1       1 4432d83626e8 3390ef850073 000000000000
       
   146        2       2 cd2534766bec 4432d83626e8 000000000000
       
   147        3       3 e96ae20f4188 3390ef850073 000000000000
       
   148        4       4 caa2a465451d e96ae20f4188 000000000000
       
   149 
       
   150   $ hg -R client-simple log -G -T '{rev} {node} {phase}\n'
       
   151   o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
       
   152   |
       
   153   o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
       
   154   |
       
   155   | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
       
   156   | |
       
   157   | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
       
   158   |/
       
   159   o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
       
   160   
       
   161 
       
   162 All manifests should have been transferred
       
   163 
       
   164   $ hg -R client-simple debugindex -m
       
   165      rev linkrev nodeid       p1           p2
       
   166        0       0 992f4779029a 000000000000 000000000000
       
   167        1       1 a988fb43583e 992f4779029a 000000000000
       
   168        2       2 ec804e488c20 a988fb43583e 000000000000
       
   169        3       3 045c7f3927da 992f4779029a 000000000000
       
   170        4       4 379cb0c2e664 045c7f3927da 000000000000
       
   171 
       
   172 Cloning only a specific revision works
       
   173 
       
   174 Output is flaky, save it in a file and check part independently
       
   175   $ hg --debug clone -U -r 4432d83626e8 http://localhost:$HGPORT client-singlehead > clone-output
       
   176 
       
   177   $ cat clone-output | grep -v "received frame"
       
   178   using http://localhost:$HGPORT/
       
   179   sending capabilities command
       
   180   sending 1 commands
       
   181   sending command lookup: {
       
   182     'key': '4432d83626e8'
       
   183   }
       
   184   query 1; heads
       
   185   sending 2 commands
       
   186   sending command heads: {}
       
   187   sending command known: {
       
   188     'nodes': []
       
   189   }
       
   190   sending 1 commands
       
   191   sending command changesetdata: {
       
   192     'fields': set([
       
   193       'bookmarks',
       
   194       'parents',
       
   195       'phase',
       
   196       'revision'
       
   197     ]),
       
   198     'revisions': [
       
   199       {
       
   200         'heads': [
       
   201           'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
       
   202         ],
       
   203         'roots': [],
       
   204         'type': 'changesetdagrange'
       
   205       }
       
   206     ]
       
   207   }
       
   208   add changeset 3390ef850073
       
   209   add changeset 4432d83626e8
       
   210   checking for updated bookmarks
       
   211   sending 1 commands
       
   212   sending command manifestdata: {
       
   213     'fields': set([
       
   214       'parents',
       
   215       'revision'
       
   216     ]),
       
   217     'haveparents': True,
       
   218     'nodes': [
       
   219       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
   220       '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8'
       
   221     ],
       
   222     'tree': ''
       
   223   }
       
   224   sending 1 commands
       
   225   sending command filesdata: {
       
   226     'fields': set([
       
   227       'parents',
       
   228       'revision'
       
   229     ]),
       
   230     'haveparents': True,
       
   231     'revisions': [
       
   232       {
       
   233         'nodes': [
       
   234           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   235           'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
       
   236         ],
       
   237         'type': 'changesetexplicit'
       
   238       }
       
   239     ]
       
   240   }
       
   241   updating the branch cache
       
   242   new changesets 3390ef850073:4432d83626e8
       
   243   updating the branch cache
       
   244   (sent 6 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   245 
       
   246   $ cat clone-output | grep "received frame"
       
   247   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   248   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   249   received frame(size=21; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   250   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   251   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   252   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   253   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   254   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   255   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   256   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   257   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   258   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   259   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   260   received frame(size=381; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   261   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   262   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   263   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   264   received frame(size=404; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   265   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   266   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   267   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   268   received frame(size=439; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   269   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   270 
       
   271   $ rm clone-output
       
   272 
       
   273   $ cd client-singlehead
       
   274 
       
   275   $ hg log -G -T '{rev} {node} {phase}\n'
       
   276   o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
       
   277   |
       
   278   o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
       
   279   
       
   280 
       
   281   $ hg debugindex -m
       
   282      rev linkrev nodeid       p1           p2
       
   283        0       0 992f4779029a 000000000000 000000000000
       
   284        1       1 a988fb43583e 992f4779029a 000000000000
       
   285 
       
   286 Incremental pull works
       
   287 
       
   288 Output is flaky, save it in a file and check part independently
       
   289   $ hg --debug pull > pull-output
       
   290 
       
   291   $ cat pull-output | grep -v "received frame"
       
   292   pulling from http://localhost:$HGPORT/
       
   293   using http://localhost:$HGPORT/
       
   294   sending capabilities command
       
   295   query 1; heads
       
   296   sending 2 commands
       
   297   sending command heads: {}
       
   298   sending command known: {
       
   299     'nodes': [
       
   300       'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
       
   301     ]
       
   302   }
       
   303   searching for changes
       
   304   all local changesets known remotely
       
   305   sending 1 commands
       
   306   sending command changesetdata: {
       
   307     'fields': set([
       
   308       'bookmarks',
       
   309       'parents',
       
   310       'phase',
       
   311       'revision'
       
   312     ]),
       
   313     'revisions': [
       
   314       {
       
   315         'heads': [
       
   316           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   317           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   318         ],
       
   319         'roots': [
       
   320           'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
       
   321         ],
       
   322         'type': 'changesetdagrange'
       
   323       }
       
   324     ]
       
   325   }
       
   326   add changeset cd2534766bec
       
   327   add changeset e96ae20f4188
       
   328   add changeset caa2a465451d
       
   329   checking for updated bookmarks
       
   330   sending 1 commands
       
   331   sending command manifestdata: {
       
   332     'fields': set([
       
   333       'parents',
       
   334       'revision'
       
   335     ]),
       
   336     'haveparents': True,
       
   337     'nodes': [
       
   338       '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
       
   339       '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
       
   340       '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
       
   341     ],
       
   342     'tree': ''
       
   343   }
       
   344   sending 1 commands
       
   345   sending command filesdata: {
       
   346     'fields': set([
       
   347       'parents',
       
   348       'revision'
       
   349     ]),
       
   350     'haveparents': True,
       
   351     'revisions': [
       
   352       {
       
   353         'nodes': [
       
   354           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
       
   355           '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
       
   356           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
       
   357         ],
       
   358         'type': 'changesetexplicit'
       
   359       }
       
   360     ]
       
   361   }
       
   362   updating the branch cache
       
   363   new changesets cd2534766bec:caa2a465451d (3 drafts)
       
   364   (run 'hg update' to get a working copy)
       
   365   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   366 
       
   367   $ cat pull-output | grep "received frame"
       
   368   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   369   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   370   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   371   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   372   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   373   received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   374   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   375   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   376   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   377   received frame(size=573; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   378   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   379   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   380   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   381   received frame(size=601; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   382   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   383   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   384   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   385   received frame(size=527; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   386   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   387 
       
   388   $ rm pull-output
       
   389 
       
   390   $ hg log -G -T '{rev} {node} {phase}\n'
       
   391   o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
       
   392   |
       
   393   o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
       
   394   |
       
   395   | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
       
   396   | |
       
   397   | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
       
   398   |/
       
   399   o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
       
   400   
       
   401 
       
   402   $ hg debugindex -m
       
   403      rev linkrev nodeid       p1           p2
       
   404        0       0 992f4779029a 000000000000 000000000000
       
   405        1       1 a988fb43583e 992f4779029a 000000000000
       
   406        2       2 ec804e488c20 a988fb43583e 000000000000
       
   407        3       3 045c7f3927da 992f4779029a 000000000000
       
   408        4       4 379cb0c2e664 045c7f3927da 000000000000
       
   409 
       
   410 Phase-only update works
       
   411 TODO this doesn't work
       
   412 
       
   413   $ hg -R ../server-simple phase --public -r caa2a465451dd
       
   414   $ hg --debug pull
       
   415   pulling from http://localhost:$HGPORT/
       
   416   using http://localhost:$HGPORT/
       
   417   sending capabilities command
       
   418   query 1; heads
       
   419   sending 2 commands
       
   420   sending command heads: {}
       
   421   sending command known: {
       
   422     'nodes': [
       
   423       '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
       
   424       '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
       
   425     ]
       
   426   }
       
   427   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   428   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   429   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   430   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   431   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   432   received frame(size=3; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   433   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   434   searching for changes
       
   435   all remote heads known locally
       
   436   sending 1 commands
       
   437   sending command changesetdata: {
       
   438     'fields': set([
       
   439       'bookmarks',
       
   440       'parents',
       
   441       'phase',
       
   442       'revision'
       
   443     ]),
       
   444     'revisions': [
       
   445       {
       
   446         'heads': [
       
   447           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   448           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   449         ],
       
   450         'roots': [
       
   451           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   452           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   453         ],
       
   454         'type': 'changesetdagrange'
       
   455       }
       
   456     ]
       
   457   }
       
   458   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   459   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   460   received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   461   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   462   checking for updated bookmarks
       
   463   (run 'hg update' to get a working copy)
       
   464   (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   465 
       
   466   $ hg log -G -T '{rev} {node} {phase}\n'
       
   467   o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
       
   468   |
       
   469   o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
       
   470   |
       
   471   | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
       
   472   | |
       
   473   | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
       
   474   |/
       
   475   o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
       
   476   
       
   477 
       
   478   $ cd ..
       
   479 
       
   480 Bookmarks are transferred on clone
       
   481 
       
   482   $ hg -R server-simple bookmark -r 3390ef850073fbc2f0dfff2244342c8e9229013a book-1
       
   483   $ hg -R server-simple bookmark -r cd2534766bece138c7c1afdc6825302f0f62d81f book-2
       
   484 
       
   485 Output is flaky, save it in a file and check part independently
       
   486   $ hg --debug clone -U http://localhost:$HGPORT/ client-bookmarks > clone-output
       
   487 
       
   488   $ cat clone-output | grep -v "received frame"
       
   489   using http://localhost:$HGPORT/
       
   490   sending capabilities command
       
   491   query 1; heads
       
   492   sending 2 commands
       
   493   sending command heads: {}
       
   494   sending command known: {
       
   495     'nodes': []
       
   496   }
       
   497   sending 1 commands
       
   498   sending command changesetdata: {
       
   499     'fields': set([
       
   500       'bookmarks',
       
   501       'parents',
       
   502       'phase',
       
   503       'revision'
       
   504     ]),
       
   505     'revisions': [
       
   506       {
       
   507         'heads': [
       
   508           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   509           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   510         ],
       
   511         'roots': [],
       
   512         'type': 'changesetdagrange'
       
   513       }
       
   514     ]
       
   515   }
       
   516   add changeset 3390ef850073
       
   517   add changeset 4432d83626e8
       
   518   add changeset cd2534766bec
       
   519   add changeset e96ae20f4188
       
   520   add changeset caa2a465451d
       
   521   checking for updated bookmarks
       
   522   adding remote bookmark book-1
       
   523   adding remote bookmark book-2
       
   524   sending 1 commands
       
   525   sending command manifestdata: {
       
   526     'fields': set([
       
   527       'parents',
       
   528       'revision'
       
   529     ]),
       
   530     'haveparents': True,
       
   531     'nodes': [
       
   532       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
   533       '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8',
       
   534       '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
       
   535       '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
       
   536       '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
       
   537     ],
       
   538     'tree': ''
       
   539   }
       
   540   sending 1 commands
       
   541   sending command filesdata: {
       
   542     'fields': set([
       
   543       'parents',
       
   544       'revision'
       
   545     ]),
       
   546     'haveparents': True,
       
   547     'revisions': [
       
   548       {
       
   549         'nodes': [
       
   550           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   551           'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0',
       
   552           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
       
   553           '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
       
   554           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
       
   555         ],
       
   556         'type': 'changesetexplicit'
       
   557       }
       
   558     ]
       
   559   }
       
   560   updating the branch cache
       
   561   new changesets 3390ef850073:caa2a465451d (1 drafts)
       
   562   updating the branch cache
       
   563   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   564 
       
   565   $ cat clone-output | grep "received frame"
       
   566   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   567   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   568   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   569   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   570   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   571   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   572   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   573   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   574   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   575   received frame(size=979; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   576   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   577   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   578   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   579   received frame(size=992; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   580   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   581   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   582   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   583   received frame(size=901; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   584   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   585 
       
   586   $ rm clone-output
       
   587 
       
   588   $ hg -R client-bookmarks bookmarks
       
   589      book-1                    0:3390ef850073
       
   590      book-2                    2:cd2534766bec
       
   591 
       
   592 Server-side bookmark moves are reflected during `hg pull`
       
   593 
       
   594   $ hg -R server-simple bookmark -r cd2534766bece138c7c1afdc6825302f0f62d81f book-1
       
   595   moving bookmark 'book-1' forward from 3390ef850073
       
   596 
       
   597 Output is flaky, save it in a file and check part independently
       
   598   $ hg -R client-bookmarks --debug pull > pull-output
       
   599 
       
   600   $ cat pull-output | grep -v "received frame"
       
   601   pulling from http://localhost:$HGPORT/
       
   602   using http://localhost:$HGPORT/
       
   603   sending capabilities command
       
   604   query 1; heads
       
   605   sending 2 commands
       
   606   sending command heads: {}
       
   607   sending command known: {
       
   608     'nodes': [
       
   609       '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
       
   610       '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
       
   611     ]
       
   612   }
       
   613   searching for changes
       
   614   all remote heads known locally
       
   615   sending 1 commands
       
   616   sending command changesetdata: {
       
   617     'fields': set([
       
   618       'bookmarks',
       
   619       'parents',
       
   620       'phase',
       
   621       'revision'
       
   622     ]),
       
   623     'revisions': [
       
   624       {
       
   625         'heads': [
       
   626           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   627           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   628         ],
       
   629         'roots': [
       
   630           '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
       
   631           '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
       
   632         ],
       
   633         'type': 'changesetdagrange'
       
   634       }
       
   635     ]
       
   636   }
       
   637   checking for updated bookmarks
       
   638   updating bookmark book-1
       
   639   (run 'hg update' to get a working copy)
       
   640   (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   641 
       
   642   $ cat pull-output | grep "received frame"
       
   643   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   644   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   645   received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   646   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   647   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   648   received frame(size=3; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   649   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   650   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   651   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   652   received frame(size=65; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   653   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   654 
       
   655   $ rm pull-output
       
   656 
       
   657   $ hg -R client-bookmarks bookmarks
       
   658      book-1                    2:cd2534766bec
       
   659      book-2                    2:cd2534766bec
       
   660 
       
   661   $ killdaemons.py
       
   662 
       
   663 Let's set up a slightly more complicated server
       
   664 
       
   665   $ hg init server-2
       
   666   $ enablehttpv2 server-2
       
   667   $ cd server-2
       
   668   $ mkdir dir0 dir1
       
   669   $ echo a0 > a
       
   670   $ echo b0 > b
       
   671   $ hg -q commit -A -m 'commit 0'
       
   672   $ echo c0 > dir0/c
       
   673   $ echo d0 > dir0/d
       
   674   $ hg -q commit -A -m 'commit 1'
       
   675   $ echo e0 > dir1/e
       
   676   $ echo f0 > dir1/f
       
   677   $ hg -q commit -A -m 'commit 2'
       
   678   $ echo c1 > dir0/c
       
   679   $ echo e1 > dir1/e
       
   680   $ hg commit -m 'commit 3'
       
   681   $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
       
   682   $ cat hg.pid > $DAEMON_PIDS
       
   683 
       
   684   $ cd ..
       
   685 
       
   686 Narrow clone only fetches some files
       
   687 
       
   688 Output is flaky, save it in a file and check part independently
       
   689   $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --include dir0/ http://localhost:$HGPORT/ client-narrow-0 > clone-output
       
   690 
       
   691   $ cat clone-output | grep -v "received frame"
       
   692   using http://localhost:$HGPORT/
       
   693   sending capabilities command
       
   694   query 1; heads
       
   695   sending 2 commands
       
   696   sending command heads: {}
       
   697   sending command known: {
       
   698     'nodes': []
       
   699   }
       
   700   sending 1 commands
       
   701   sending command changesetdata: {
       
   702     'fields': set([
       
   703       'bookmarks',
       
   704       'parents',
       
   705       'phase',
       
   706       'revision'
       
   707     ]),
       
   708     'revisions': [
       
   709       {
       
   710         'heads': [
       
   711           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   712         ],
       
   713         'roots': [],
       
   714         'type': 'changesetdagrange'
       
   715       }
       
   716     ]
       
   717   }
       
   718   add changeset 3390ef850073
       
   719   add changeset b709380892b1
       
   720   add changeset 47fe012ab237
       
   721   add changeset 97765fc3cd62
       
   722   checking for updated bookmarks
       
   723   sending 1 commands
       
   724   sending command manifestdata: {
       
   725     'fields': set([
       
   726       'parents',
       
   727       'revision'
       
   728     ]),
       
   729     'haveparents': True,
       
   730     'nodes': [
       
   731       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
   732       '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
       
   733       '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
       
   734       '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
       
   735     ],
       
   736     'tree': ''
       
   737   }
       
   738   sending 1 commands
       
   739   sending command filesdata: {
       
   740     'fields': set([
       
   741       'parents',
       
   742       'revision'
       
   743     ]),
       
   744     'haveparents': True,
       
   745     'pathfilter': {
       
   746       'include': [
       
   747         'path:dir0'
       
   748       ]
       
   749     },
       
   750     'revisions': [
       
   751       {
       
   752         'nodes': [
       
   753           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   754           '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
       
   755           'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
       
   756           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   757         ],
       
   758         'type': 'changesetexplicit'
       
   759       }
       
   760     ]
       
   761   }
       
   762   updating the branch cache
       
   763   new changesets 3390ef850073:97765fc3cd62
       
   764   updating the branch cache
       
   765   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   766 
       
   767   $ cat clone-output | grep "received frame"
       
   768   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   769   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   770   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   771   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   772   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   773   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   774   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   775   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   776   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   777   received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   778   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   779   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   780   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   781   received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   782   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   783   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   784   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   785   received frame(size=449; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   786   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   787 
       
   788   $ rm clone-output
       
   789 
       
   790 #if reporevlogstore
       
   791   $ find client-narrow-0/.hg/store -type f -name '*.i' | sort
       
   792   client-narrow-0/.hg/store/00changelog.i
       
   793   client-narrow-0/.hg/store/00manifest.i
       
   794   client-narrow-0/.hg/store/data/dir0/c.i
       
   795   client-narrow-0/.hg/store/data/dir0/d.i
       
   796 #endif
       
   797 
       
   798 --exclude by itself works
       
   799 
       
   800 Output is flaky, save it in a file and check part independently
       
   801   $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --exclude dir0/ http://localhost:$HGPORT/ client-narrow-1 > clone-output
       
   802 
       
   803   $ cat clone-output | grep -v "received frame"
       
   804   using http://localhost:$HGPORT/
       
   805   sending capabilities command
       
   806   query 1; heads
       
   807   sending 2 commands
       
   808   sending command heads: {}
       
   809   sending command known: {
       
   810     'nodes': []
       
   811   }
       
   812   sending 1 commands
       
   813   sending command changesetdata: {
       
   814     'fields': set([
       
   815       'bookmarks',
       
   816       'parents',
       
   817       'phase',
       
   818       'revision'
       
   819     ]),
       
   820     'revisions': [
       
   821       {
       
   822         'heads': [
       
   823           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   824         ],
       
   825         'roots': [],
       
   826         'type': 'changesetdagrange'
       
   827       }
       
   828     ]
       
   829   }
       
   830   add changeset 3390ef850073
       
   831   add changeset b709380892b1
       
   832   add changeset 47fe012ab237
       
   833   add changeset 97765fc3cd62
       
   834   checking for updated bookmarks
       
   835   sending 1 commands
       
   836   sending command manifestdata: {
       
   837     'fields': set([
       
   838       'parents',
       
   839       'revision'
       
   840     ]),
       
   841     'haveparents': True,
       
   842     'nodes': [
       
   843       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
   844       '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
       
   845       '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
       
   846       '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
       
   847     ],
       
   848     'tree': ''
       
   849   }
       
   850   sending 1 commands
       
   851   sending command filesdata: {
       
   852     'fields': set([
       
   853       'parents',
       
   854       'revision'
       
   855     ]),
       
   856     'haveparents': True,
       
   857     'pathfilter': {
       
   858       'exclude': [
       
   859         'path:dir0'
       
   860       ],
       
   861       'include': [
       
   862         'path:.'
       
   863       ]
       
   864     },
       
   865     'revisions': [
       
   866       {
       
   867         'nodes': [
       
   868           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   869           '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
       
   870           'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
       
   871           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   872         ],
       
   873         'type': 'changesetexplicit'
       
   874       }
       
   875     ]
       
   876   }
       
   877   updating the branch cache
       
   878   new changesets 3390ef850073:97765fc3cd62
       
   879   updating the branch cache
       
   880   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   881 
       
   882   $ cat clone-output | grep "received frame"
       
   883   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   884   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   885   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   886   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   887   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   888   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   889   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
   890   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   891   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   892   received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   893   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   894   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   895   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   896   received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   897   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   898   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
   899   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   900   received frame(size=709; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
   901   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
   902 
       
   903   $ rm clone-output
       
   904 
       
   905 #if reporevlogstore
       
   906   $ find client-narrow-1/.hg/store -type f -name '*.i' | sort
       
   907   client-narrow-1/.hg/store/00changelog.i
       
   908   client-narrow-1/.hg/store/00manifest.i
       
   909   client-narrow-1/.hg/store/data/a.i
       
   910   client-narrow-1/.hg/store/data/b.i
       
   911   client-narrow-1/.hg/store/data/dir1/e.i
       
   912   client-narrow-1/.hg/store/data/dir1/f.i
       
   913 #endif
       
   914 
       
   915 Mixing --include and --exclude works
       
   916 
       
   917 Output is flaky, save it in a file and check part independently
       
   918   $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --include dir0/ --exclude dir0/c http://localhost:$HGPORT/ client-narrow-2 > clone-output
       
   919 
       
   920   $ cat clone-output | grep -v "received frame"
       
   921   using http://localhost:$HGPORT/
       
   922   sending capabilities command
       
   923   query 1; heads
       
   924   sending 2 commands
       
   925   sending command heads: {}
       
   926   sending command known: {
       
   927     'nodes': []
       
   928   }
       
   929   sending 1 commands
       
   930   sending command changesetdata: {
       
   931     'fields': set([
       
   932       'bookmarks',
       
   933       'parents',
       
   934       'phase',
       
   935       'revision'
       
   936     ]),
       
   937     'revisions': [
       
   938       {
       
   939         'heads': [
       
   940           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   941         ],
       
   942         'roots': [],
       
   943         'type': 'changesetdagrange'
       
   944       }
       
   945     ]
       
   946   }
       
   947   add changeset 3390ef850073
       
   948   add changeset b709380892b1
       
   949   add changeset 47fe012ab237
       
   950   add changeset 97765fc3cd62
       
   951   checking for updated bookmarks
       
   952   sending 1 commands
       
   953   sending command manifestdata: {
       
   954     'fields': set([
       
   955       'parents',
       
   956       'revision'
       
   957     ]),
       
   958     'haveparents': True,
       
   959     'nodes': [
       
   960       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
   961       '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
       
   962       '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
       
   963       '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
       
   964     ],
       
   965     'tree': ''
       
   966   }
       
   967   sending 1 commands
       
   968   sending command filesdata: {
       
   969     'fields': set([
       
   970       'parents',
       
   971       'revision'
       
   972     ]),
       
   973     'haveparents': True,
       
   974     'pathfilter': {
       
   975       'exclude': [
       
   976         'path:dir0/c'
       
   977       ],
       
   978       'include': [
       
   979         'path:dir0'
       
   980       ]
       
   981     },
       
   982     'revisions': [
       
   983       {
       
   984         'nodes': [
       
   985           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
   986           '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
       
   987           'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
       
   988           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
   989         ],
       
   990         'type': 'changesetexplicit'
       
   991       }
       
   992     ]
       
   993   }
       
   994   updating the branch cache
       
   995   new changesets 3390ef850073:97765fc3cd62
       
   996   updating the branch cache
       
   997   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
   998 
       
   999   $ cat clone-output | grep "received frame"
       
  1000   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1001   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1002   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1003   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1004   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1005   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1006   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
  1007   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1008   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1009   received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1010   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1011   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1012   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1013   received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1014   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1015   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1016   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1017   received frame(size=160; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1018   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1019 
       
  1020   $ rm clone-output
       
  1021 
       
  1022 #if reporevlogstore
       
  1023   $ find client-narrow-2/.hg/store -type f -name '*.i' | sort
       
  1024   client-narrow-2/.hg/store/00changelog.i
       
  1025   client-narrow-2/.hg/store/00manifest.i
       
  1026   client-narrow-2/.hg/store/data/dir0/d.i
       
  1027 #endif
       
  1028 
       
  1029 --stream will use rawfiledata to transfer changelog and manifestlog, then
       
  1030 fall through to get files data
       
  1031 
       
  1032 Output is flaky, save it in a file and check part independently
       
  1033   $ hg --debug clone --stream -U http://localhost:$HGPORT client-stream-0 > clone-output
       
  1034 
       
  1035   $ cat clone-output | grep -v "received frame"
       
  1036   using http://localhost:$HGPORT/
       
  1037   sending capabilities command
       
  1038   sending 1 commands
       
  1039   sending command rawstorefiledata: {
       
  1040     'files': [
       
  1041       'changelog',
       
  1042       'manifestlog'
       
  1043     ]
       
  1044   }
       
  1045   updating the branch cache
       
  1046   query 1; heads
       
  1047   sending 2 commands
       
  1048   sending command heads: {}
       
  1049   sending command known: {
       
  1050     'nodes': [
       
  1051       '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1052     ]
       
  1053   }
       
  1054   searching for changes
       
  1055   all remote heads known locally
       
  1056   sending 1 commands
       
  1057   sending command changesetdata: {
       
  1058     'fields': set([
       
  1059       'bookmarks',
       
  1060       'parents',
       
  1061       'phase',
       
  1062       'revision'
       
  1063     ]),
       
  1064     'revisions': [
       
  1065       {
       
  1066         'heads': [
       
  1067           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1068         ],
       
  1069         'roots': [
       
  1070           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1071         ],
       
  1072         'type': 'changesetdagrange'
       
  1073       }
       
  1074     ]
       
  1075   }
       
  1076   checking for updated bookmarks
       
  1077   sending 1 commands
       
  1078   sending command filesdata: {
       
  1079     'fields': set([
       
  1080       'parents',
       
  1081       'revision'
       
  1082     ]),
       
  1083     'haveparents': True,
       
  1084     'revisions': [
       
  1085       {
       
  1086         'nodes': [
       
  1087           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
  1088           '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
       
  1089           'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
       
  1090           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1091         ],
       
  1092         'type': 'changesetexplicit'
       
  1093       }
       
  1094     ]
       
  1095   }
       
  1096   updating the branch cache
       
  1097   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
  1098 
       
  1099   $ cat clone-output | grep "received frame"
       
  1100   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1101   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1102   received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !)
       
  1103   received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !)
       
  1104   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1105   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1106   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1107   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1108   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1109   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1110   received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1111   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
  1112   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1113   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1114   received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1115   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1116   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1117   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1118   received frame(size=1133; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1119   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1120 
       
  1121   $ rm clone-output
       
  1122 
       
  1123 --stream + --include/--exclude will only obtain some files
       
  1124 
       
  1125 Output is flaky, save it in a file and check part independently
       
  1126   $ hg --debug --config extensions.pullext=$TESTDIR/pullext.py clone --stream --include dir0/ -U http://localhost:$HGPORT client-stream-2 > clone-output
       
  1127 
       
  1128   $ cat clone-output | grep -v "received frame"
       
  1129   using http://localhost:$HGPORT/
       
  1130   sending capabilities command
       
  1131   sending 1 commands
       
  1132   sending command rawstorefiledata: {
       
  1133     'files': [
       
  1134       'changelog',
       
  1135       'manifestlog'
       
  1136     ]
       
  1137   }
       
  1138   updating the branch cache
       
  1139   query 1; heads
       
  1140   sending 2 commands
       
  1141   sending command heads: {}
       
  1142   sending command known: {
       
  1143     'nodes': [
       
  1144       '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1145     ]
       
  1146   }
       
  1147   searching for changes
       
  1148   all remote heads known locally
       
  1149   sending 1 commands
       
  1150   sending command changesetdata: {
       
  1151     'fields': set([
       
  1152       'bookmarks',
       
  1153       'parents',
       
  1154       'phase',
       
  1155       'revision'
       
  1156     ]),
       
  1157     'revisions': [
       
  1158       {
       
  1159         'heads': [
       
  1160           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1161         ],
       
  1162         'roots': [
       
  1163           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1164         ],
       
  1165         'type': 'changesetdagrange'
       
  1166       }
       
  1167     ]
       
  1168   }
       
  1169   checking for updated bookmarks
       
  1170   sending 1 commands
       
  1171   sending command filesdata: {
       
  1172     'fields': set([
       
  1173       'parents',
       
  1174       'revision'
       
  1175     ]),
       
  1176     'haveparents': True,
       
  1177     'pathfilter': {
       
  1178       'include': [
       
  1179         'path:dir0'
       
  1180       ]
       
  1181     },
       
  1182     'revisions': [
       
  1183       {
       
  1184         'nodes': [
       
  1185           '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
       
  1186           '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
       
  1187           'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
       
  1188           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1189         ],
       
  1190         'type': 'changesetexplicit'
       
  1191       }
       
  1192     ]
       
  1193   }
       
  1194   updating the branch cache
       
  1195   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
  1196 
       
  1197   $ cat clone-output | grep "received frame"
       
  1198   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1199   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1200   received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !)
       
  1201   received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !)
       
  1202   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1203   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1204   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1205   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1206   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1207   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1208   received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1209   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
  1210   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1211   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1212   received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1213   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1214   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1215   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1216   received frame(size=449; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1217   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1218 
       
  1219   $ rm clone-output
       
  1220 
       
  1221 #if reporevlogstore
       
  1222   $ find client-stream-2/.hg/store -type f -name '*.i' | sort
       
  1223   client-stream-2/.hg/store/00changelog.i
       
  1224   client-stream-2/.hg/store/00manifest.i
       
  1225   client-stream-2/.hg/store/data/dir0/c.i
       
  1226   client-stream-2/.hg/store/data/dir0/d.i
       
  1227 #endif
       
  1228 
       
  1229 Shallow clone doesn't work with revlogs
       
  1230 
       
  1231 Output is flaky, save it in a file and check part independently
       
  1232   $ hg --debug --config extensions.pullext=$TESTDIR/pullext.py clone --depth 1 -U http://localhost:$HGPORT client-shallow-revlogs > clone-output
       
  1233   transaction abort!
       
  1234   rollback completed
       
  1235   abort: revlog storage does not support missing parents write mode
       
  1236   [255]
       
  1237 
       
  1238   $ cat clone-output | grep -v "received frame"
       
  1239   using http://localhost:$HGPORT/
       
  1240   sending capabilities command
       
  1241   query 1; heads
       
  1242   sending 2 commands
       
  1243   sending command heads: {}
       
  1244   sending command known: {
       
  1245     'nodes': []
       
  1246   }
       
  1247   sending 1 commands
       
  1248   sending command changesetdata: {
       
  1249     'fields': set([
       
  1250       'bookmarks',
       
  1251       'parents',
       
  1252       'phase',
       
  1253       'revision'
       
  1254     ]),
       
  1255     'revisions': [
       
  1256       {
       
  1257         'heads': [
       
  1258           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1259         ],
       
  1260         'roots': [],
       
  1261         'type': 'changesetdagrange'
       
  1262       }
       
  1263     ]
       
  1264   }
       
  1265   add changeset 3390ef850073
       
  1266   add changeset b709380892b1
       
  1267   add changeset 47fe012ab237
       
  1268   add changeset 97765fc3cd62
       
  1269   checking for updated bookmarks
       
  1270   sending 1 commands
       
  1271   sending command manifestdata: {
       
  1272     'fields': set([
       
  1273       'parents',
       
  1274       'revision'
       
  1275     ]),
       
  1276     'haveparents': True,
       
  1277     'nodes': [
       
  1278       '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
       
  1279       '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
       
  1280       '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
       
  1281       '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
       
  1282     ],
       
  1283     'tree': ''
       
  1284   }
       
  1285   sending 1 commands
       
  1286   sending command filesdata: {
       
  1287     'fields': set([
       
  1288       'linknode',
       
  1289       'parents',
       
  1290       'revision'
       
  1291     ]),
       
  1292     'haveparents': False,
       
  1293     'revisions': [
       
  1294       {
       
  1295         'nodes': [
       
  1296           '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
       
  1297         ],
       
  1298         'type': 'changesetexplicit'
       
  1299       }
       
  1300     ]
       
  1301   }
       
  1302   (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
       
  1303 
       
  1304   $ cat clone-output | grep "received frame"
       
  1305   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1306   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1307   received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1308   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1309   received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1310   received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1311   received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
       
  1312   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1313   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1314   received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1315   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1316   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1317   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1318   received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1319   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1320   received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
       
  1321   received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1322   received frame(size=1005; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
       
  1323   received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
       
  1324 
       
  1325   $ rm clone-output
       
  1326 
       
  1327   $ killdaemons.py
       
  1328 
       
  1329 Repo with 2 DAG branches introducing same filenode, to test linknode adjustment
       
  1330 
       
  1331   $ hg init server-linknode
       
  1332   $ enablehttpv2 server-linknode
       
  1333   $ cd server-linknode
       
  1334   $ touch foo
       
  1335   $ hg -q commit -Am initial
       
  1336   $ echo foo > dupe-file
       
  1337   $ hg commit -Am 'dupe 1'
       
  1338   adding dupe-file
       
  1339   $ hg -q up -r 0
       
  1340   $ echo foo > dupe-file
       
  1341   $ hg commit -Am 'dupe 2'
       
  1342   adding dupe-file
       
  1343   created new head
       
  1344   $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
       
  1345   $ cat hg.pid > $DAEMON_PIDS
       
  1346   $ cd ..
       
  1347 
       
  1348 Perform an incremental pull of both heads and ensure linkrev is written out properly
       
  1349 
       
  1350   $ hg clone -r 96ee1d7354c4 http://localhost:$HGPORT client-linknode-1
       
  1351   new changesets 96ee1d7354c4
       
  1352   updating to branch default
       
  1353   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1354   $ cd client-linknode-1
       
  1355   $ touch extra
       
  1356   $ hg commit -Am extra
       
  1357   adding extra
       
  1358   $ cd ..
       
  1359 
       
  1360   $ hg clone -r 96ee1d7354c4 http://localhost:$HGPORT client-linknode-2
       
  1361   new changesets 96ee1d7354c4
       
  1362   updating to branch default
       
  1363   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1364   $ cd client-linknode-2
       
  1365   $ touch extra
       
  1366   $ hg commit -Am extra
       
  1367   adding extra
       
  1368   $ cd ..
       
  1369 
       
  1370   $ hg -R client-linknode-1 pull -r 1681c33f9f80
       
  1371   pulling from http://localhost:$HGPORT/
       
  1372   searching for changes
       
  1373   new changesets 1681c33f9f80
       
  1374   (run 'hg update' to get a working copy)
       
  1375 
       
  1376 #if reporevlogstore
       
  1377   $ hg -R client-linknode-1 debugrevlogindex dupe-file
       
  1378      rev linkrev nodeid       p1           p2
       
  1379        0       2 2ed2a3912a0b 000000000000 000000000000
       
  1380 #endif
       
  1381 
       
  1382   $ hg -R client-linknode-2 pull -r 639c8990d6a5
       
  1383   pulling from http://localhost:$HGPORT/
       
  1384   searching for changes
       
  1385   new changesets 639c8990d6a5
       
  1386   (run 'hg update' to get a working copy)
       
  1387 
       
  1388 #if reporevlogstore
       
  1389   $ hg -R client-linknode-2 debugrevlogindex dupe-file
       
  1390      rev linkrev nodeid       p1           p2
       
  1391        0       2 2ed2a3912a0b 000000000000 000000000000
       
  1392 #endif