tests/test-narrow-widen-no-ellipsis.t
changeset 39363 048333ef0169
parent 39361 5ebfb7cc6f2c
child 39391 3d8b73c0fadf
equal deleted inserted replaced
39362:438f3932a432 39363:048333ef0169
       
     1 #testcases tree flat
       
     2   $ . "$TESTDIR/narrow-library.sh"
       
     3 
       
     4 #if tree
       
     5   $ cat << EOF >> $HGRCPATH
       
     6   > [experimental]
       
     7   > treemanifest = 1
       
     8   > EOF
       
     9 #endif
       
    10 
       
    11   $ hg init master
       
    12   $ cd master
       
    13 
       
    14   $ mkdir inside
       
    15   $ echo 'inside' > inside/f
       
    16   $ hg add inside/f
       
    17   $ hg commit -m 'add inside'
       
    18 
       
    19   $ mkdir widest
       
    20   $ echo 'widest' > widest/f
       
    21   $ hg add widest/f
       
    22   $ hg commit -m 'add widest'
       
    23 
       
    24   $ mkdir outside
       
    25   $ echo 'outside' > outside/f
       
    26   $ hg add outside/f
       
    27   $ hg commit -m 'add outside'
       
    28 
       
    29   $ cd ..
       
    30 
       
    31 narrow clone the inside file
       
    32 
       
    33   $ hg clone --narrow ssh://user@dummy/master narrow --include inside
       
    34   requesting all changes
       
    35   adding changesets
       
    36   adding manifests
       
    37   adding file changes
       
    38   added 3 changesets with 1 changes to 1 files
       
    39   new changesets *:* (glob)
       
    40   updating to branch default
       
    41   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    42   $ cd narrow
       
    43   $ hg tracked
       
    44   I path:inside
       
    45   $ ls
       
    46   inside
       
    47   $ cat inside/f
       
    48   inside
       
    49   $ cd ..
       
    50 
       
    51 add more upstream files which we will include in a wider narrow spec
       
    52 
       
    53   $ cd master
       
    54 
       
    55   $ mkdir wider
       
    56   $ echo 'wider' > wider/f
       
    57   $ hg add wider/f
       
    58   $ echo 'widest v2' > widest/f
       
    59   $ hg commit -m 'add wider, update widest'
       
    60 
       
    61   $ echo 'widest v3' > widest/f
       
    62   $ hg commit -m 'update widest v3'
       
    63 
       
    64   $ echo 'inside v2' > inside/f
       
    65   $ hg commit -m 'update inside'
       
    66 
       
    67   $ mkdir outside2
       
    68   $ echo 'outside2' > outside2/f
       
    69   $ hg add outside2/f
       
    70   $ hg commit -m 'add outside2'
       
    71 
       
    72   $ echo 'widest v4' > widest/f
       
    73   $ hg commit -m 'update widest v4'
       
    74 
       
    75   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
    76   7: update widest v4
       
    77   6: add outside2
       
    78   5: update inside
       
    79   4: update widest v3
       
    80   3: add wider, update widest
       
    81   2: add outside
       
    82   1: add widest
       
    83   0: add inside
       
    84 
       
    85   $ cd ..
       
    86 
       
    87 Widen the narrow spec to see the wider file. This should not get the newly
       
    88 added upstream revisions.
       
    89 
       
    90   $ cd narrow
       
    91   $ hg tracked --addinclude wider/f
       
    92   comparing with ssh://user@dummy/master
       
    93   searching for changes
       
    94   no changes found
       
    95   adding changesets
       
    96   adding manifests
       
    97   adding file changes
       
    98   added 0 changesets with 0 changes to 1 files
       
    99   3 local changesets published
       
   100   $ hg tracked
       
   101   I path:inside
       
   102   I path:wider/f
       
   103 
       
   104 Pull down the newly added upstream revision.
       
   105 
       
   106   $ hg pull
       
   107   pulling from ssh://user@dummy/master
       
   108   searching for changes
       
   109   adding changesets
       
   110   adding manifests
       
   111   adding file changes
       
   112   added 5 changesets with 2 changes to 2 files
       
   113   new changesets *:* (glob)
       
   114   (run 'hg update' to get a working copy)
       
   115   $ hg update -r 'desc("add wider")'
       
   116   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   117   $ cat wider/f
       
   118   wider
       
   119 
       
   120   $ hg update -r 'desc("update inside")'
       
   121   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   122   $ cat wider/f
       
   123   wider
       
   124   $ cat inside/f
       
   125   inside v2
       
   126 
       
   127   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   128   7: update widest v4
       
   129   6: add outside2
       
   130   5: update inside
       
   131   4: update widest v3
       
   132   3: add wider, update widest
       
   133   2: add outside
       
   134   1: add widest
       
   135   0: add inside
       
   136 
       
   137 Check that widening with a newline fails
       
   138 
       
   139   $ hg tracked --addinclude 'widest
       
   140   > '
       
   141   abort: newlines are not allowed in narrowspec paths
       
   142   [255]
       
   143 
       
   144 widen the narrow spec to include the widest file
       
   145 
       
   146   $ hg tracked --addinclude widest
       
   147   comparing with ssh://user@dummy/master
       
   148   searching for changes
       
   149   no changes found
       
   150   adding changesets
       
   151   adding manifests
       
   152   adding file changes
       
   153   added 0 changesets with 4 changes to 3 files
       
   154   5 local changesets published
       
   155   $ hg tracked
       
   156   I path:inside
       
   157   I path:wider/f
       
   158   I path:widest
       
   159   $ hg update 'desc("add widest")'
       
   160   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   161   $ cat widest/f
       
   162   widest
       
   163   $ hg update 'desc("add wider, update widest")'
       
   164   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   165   $ cat wider/f
       
   166   wider
       
   167   $ cat widest/f
       
   168   widest v2
       
   169   $ hg update 'desc("update widest v3")'
       
   170   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   171   $ cat widest/f
       
   172   widest v3
       
   173   $ hg update 'desc("update widest v4")'
       
   174   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   175   $ cat widest/f
       
   176   widest v4
       
   177 
       
   178   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   179   7: update widest v4
       
   180   6: add outside2
       
   181   5: update inside
       
   182   4: update widest v3
       
   183   3: add wider, update widest
       
   184   2: add outside
       
   185   1: add widest
       
   186   0: add inside
       
   187 
       
   188 separate suite of tests: files from 0-10 modified in changes 0-10. This allows
       
   189 more obvious precise tests tickling particular corner cases.
       
   190 
       
   191   $ cd ..
       
   192   $ hg init upstream
       
   193   $ cd upstream
       
   194   $ for x in `$TESTDIR/seq.py 0 10`
       
   195   > do
       
   196   >   mkdir d$x
       
   197   >   echo $x > d$x/f
       
   198   >   hg add d$x/f
       
   199   >   hg commit -m "add d$x/f"
       
   200   > done
       
   201   $ hg log -T "{rev}: {desc}\n"
       
   202   10: add d10/f
       
   203   9: add d9/f
       
   204   8: add d8/f
       
   205   7: add d7/f
       
   206   6: add d6/f
       
   207   5: add d5/f
       
   208   4: add d4/f
       
   209   3: add d3/f
       
   210   2: add d2/f
       
   211   1: add d1/f
       
   212   0: add d0/f
       
   213 
       
   214 make narrow clone with every third node.
       
   215 
       
   216   $ cd ..
       
   217   $ hg clone --narrow ssh://user@dummy/upstream narrow2 --include d0 --include d3 --include d6 --include d9
       
   218   requesting all changes
       
   219   adding changesets
       
   220   adding manifests
       
   221   adding file changes
       
   222   added 11 changesets with 4 changes to 4 files
       
   223   new changesets *:* (glob)
       
   224   updating to branch default
       
   225   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   226   $ cd narrow2
       
   227   $ hg tracked
       
   228   I path:d0
       
   229   I path:d3
       
   230   I path:d6
       
   231   I path:d9
       
   232   $ hg verify
       
   233   checking changesets
       
   234   checking manifests
       
   235   checking directory manifests (tree !)
       
   236   crosschecking files in changesets and manifests
       
   237   checking files
       
   238   4 files, 11 changesets, 4 total revisions
       
   239   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   240   10: add d10/f
       
   241   9: add d9/f
       
   242   8: add d8/f
       
   243   7: add d7/f
       
   244   6: add d6/f
       
   245   5: add d5/f
       
   246   4: add d4/f
       
   247   3: add d3/f
       
   248   2: add d2/f
       
   249   1: add d1/f
       
   250   0: add d0/f
       
   251   $ hg tracked --addinclude d1
       
   252   comparing with ssh://user@dummy/upstream
       
   253   searching for changes
       
   254   no changes found
       
   255   adding changesets
       
   256   adding manifests
       
   257   adding file changes
       
   258   added 0 changesets with 1 changes to 5 files
       
   259   11 local changesets published
       
   260   $ hg tracked
       
   261   I path:d0
       
   262   I path:d1
       
   263   I path:d3
       
   264   I path:d6
       
   265   I path:d9
       
   266   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   267   10: add d10/f
       
   268   9: add d9/f
       
   269   8: add d8/f
       
   270   7: add d7/f
       
   271   6: add d6/f
       
   272   5: add d5/f
       
   273   4: add d4/f
       
   274   3: add d3/f
       
   275   2: add d2/f
       
   276   1: add d1/f
       
   277   0: add d0/f
       
   278 
       
   279 Verify shouldn't claim the repo is corrupt after a widen.
       
   280 
       
   281   $ hg verify
       
   282   checking changesets
       
   283   checking manifests
       
   284   checking directory manifests (tree !)
       
   285   crosschecking files in changesets and manifests
       
   286   checking files
       
   287   5 files, 11 changesets, 5 total revisions
       
   288 
       
   289 Widening preserves parent of local commit
       
   290 
       
   291   $ cd ..
       
   292   $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2
       
   293   $ cd narrow3
       
   294   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   295   2: add d2/f
       
   296   1: add d1/f
       
   297   0: add d0/f
       
   298   $ hg pull -q -r 3
       
   299   $ hg co -q tip
       
   300   $ hg pull -q -r 4
       
   301   $ echo local > d2/f
       
   302   $ hg ci -m local
       
   303   created new head
       
   304   $ hg tracked -q --addinclude d0 --addinclude d9
       
   305 
       
   306 Widening preserves bookmarks
       
   307 
       
   308   $ cd ..
       
   309   $ hg clone -q --narrow ssh://user@dummy/upstream narrow-bookmarks --include d4
       
   310   $ cd narrow-bookmarks
       
   311   $ echo local > d4/f
       
   312   $ hg ci -m local
       
   313   $ hg bookmarks bookmark
       
   314   $ hg bookmarks
       
   315    * bookmark                  11:* (glob)
       
   316   $ hg -q tracked --addinclude d2
       
   317   $ hg bookmarks
       
   318    * bookmark                  11:* (glob)
       
   319   $ hg log -r bookmark -T '{desc}\n'
       
   320   local
       
   321 
       
   322 Widening that fails can be recovered from
       
   323 
       
   324   $ cd ..
       
   325   $ hg clone -q --narrow ssh://user@dummy/upstream interrupted --include d0
       
   326   $ cd interrupted
       
   327   $ echo local > d0/f
       
   328   $ hg ci -m local
       
   329   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   330   11: local
       
   331   10: add d10/f
       
   332   9: add d9/f
       
   333   8: add d8/f
       
   334   7: add d7/f
       
   335   6: add d6/f
       
   336   5: add d5/f
       
   337   4: add d4/f
       
   338   3: add d3/f
       
   339   2: add d2/f
       
   340   1: add d1/f
       
   341   0: add d0/f
       
   342   $ hg bookmarks bookmark
       
   343   $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
       
   344   comparing with ssh://user@dummy/upstream
       
   345   searching for changes
       
   346   no changes found
       
   347   adding changesets
       
   348   adding manifests
       
   349   adding file changes
       
   350   added 0 changesets with 1 changes to 2 files
       
   351   11 local changesets published
       
   352   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   353   11: local
       
   354   10: add d10/f
       
   355   9: add d9/f
       
   356   8: add d8/f
       
   357   7: add d7/f
       
   358   6: add d6/f
       
   359   5: add d5/f
       
   360   4: add d4/f
       
   361   3: add d3/f
       
   362   2: add d2/f
       
   363   1: add d1/f
       
   364   0: add d0/f
       
   365   $ hg bookmarks
       
   366    * bookmark                  11:* (glob)
       
   367   $ hg unbundle .hg/strip-backup/*-widen.hg
       
   368   abort: $ENOENT$: .hg/strip-backup/*-widen.hg
       
   369   [255]
       
   370   $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
       
   371   11: local
       
   372   10: add d10/f
       
   373   9: add d9/f
       
   374   8: add d8/f
       
   375   7: add d7/f
       
   376   6: add d6/f
       
   377   5: add d5/f
       
   378   4: add d4/f
       
   379   3: add d3/f
       
   380   2: add d2/f
       
   381   1: add d1/f
       
   382   0: add d0/f
       
   383   $ hg bookmarks
       
   384    * bookmark                  11:* (glob)