tests/test-narrow-share.t
changeset 41042 7db1619af061
child 41043 ce0bc2952e2a
equal deleted inserted replaced
41041:1e8d9f472ea1 41042:7db1619af061
       
     1 #testcases flat tree
       
     2 
       
     3   $ . "$TESTDIR/narrow-library.sh"
       
     4 
       
     5 #if tree
       
     6   $ cat << EOF >> $HGRCPATH
       
     7   > [experimental]
       
     8   > treemanifest = 1
       
     9   > EOF
       
    10 #endif
       
    11 
       
    12   $ cat << EOF >> $HGRCPATH
       
    13   > [extensions]
       
    14   > share =
       
    15   > EOF
       
    16 
       
    17   $ hg init remote
       
    18   $ cd remote
       
    19   $ for x in `$TESTDIR/seq.py 0 10`
       
    20   > do
       
    21   >   mkdir d$x
       
    22   >   echo $x > d$x/f
       
    23   >   hg add d$x/f
       
    24   >   hg commit -m "add d$x/f"
       
    25   > done
       
    26   $ cd ..
       
    27 
       
    28   $ hg clone --narrow ssh://user@dummy/remote main -q \
       
    29   > --include d1 --include d3 --include d5 --include d7
       
    30 
       
    31   $ hg share main share
       
    32   updating working directory
       
    33   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    34   $ hg -R share tracked
       
    35   I path:d1
       
    36   I path:d3
       
    37   I path:d5
       
    38   I path:d7
       
    39   $ hg -R share files
       
    40   share/d1/f
       
    41   share/d3/f
       
    42   share/d5/f
       
    43   share/d7/f
       
    44 
       
    45 Narrow the share and check that the main repo's working copy gets updated
       
    46 
       
    47 # Make d3/f dirty
       
    48   $ echo x >> main/d3/f
       
    49   $ echo y >> main/d3/g
       
    50   $ hg add main/d3/g
       
    51   $ hg -R main st
       
    52   M d3/f
       
    53   A d3/g
       
    54 # Make d5/f not match the dirstate timestamp even though it's clean
       
    55   $ sleep 2
       
    56   $ hg -R main st
       
    57   M d3/f
       
    58   A d3/g
       
    59   $ hg -R main debugdirstate --no-dates
       
    60   n 644          2 set                 d1/f
       
    61   n 644          2 unset               d3/f
       
    62   a   0         -1 unset               d3/g
       
    63   n 644          2 set                 d5/f
       
    64   n 644          2 set                 d7/f
       
    65   $ touch main/d5/f
       
    66   $ hg -R share tracked --removeinclude d1 --removeinclude d3 --removeinclude d5
       
    67   comparing with ssh://user@dummy/remote
       
    68   searching for changes
       
    69   looking for local changes to affected paths
       
    70   deleting data/d1/f.i
       
    71   deleting data/d3/f.i
       
    72   deleting data/d5/f.i
       
    73   deleting meta/d1/00manifest.i (tree !)
       
    74   deleting meta/d3/00manifest.i (tree !)
       
    75   deleting meta/d5/00manifest.i (tree !)
       
    76   $ hg -R main tracked
       
    77   I path:d7
       
    78 # d1/f, d3/f, d3/g and d5/f should no longer be reported
       
    79   $ hg -R main files
       
    80   main/d7/f
       
    81 # d1/f should no longer be there, d3/f should be since it was dirty, d3/g should be there since
       
    82 # it was added, and d5/f should be since we couldn't be sure it was clean
       
    83   $ find main/d* -type f | sort
       
    84   main/d1/f
       
    85   main/d3/f
       
    86   main/d3/g
       
    87   main/d5/f
       
    88   main/d7/f
       
    89 
       
    90 Widen the share and check that the main repo's working copy gets updated
       
    91 
       
    92   $ hg -R share tracked --addinclude d1 --addinclude d3 -q
       
    93   $ hg -R share tracked
       
    94   I path:d1
       
    95   I path:d3
       
    96   I path:d7
       
    97   $ hg -R share files
       
    98   share/d1/f
       
    99   share/d3/f
       
   100   share/d7/f
       
   101   $ hg -R main tracked
       
   102   I path:d1
       
   103   I path:d3
       
   104   I path:d7
       
   105 # d1/f, d3/f should be back
       
   106   $ hg -R main files
       
   107   main/d1/f
       
   108   main/d3/f
       
   109   main/d3/g
       
   110   main/d7/f
       
   111 # d3/f should be modified (not clobbered by the widening), and d3/g should be untracked
       
   112   $ hg -R main st --all
       
   113   M d3/f
       
   114   A d3/g
       
   115   C d1/f
       
   116   C d7/f
       
   117 
       
   118 We should also be able to unshare without breaking everything:
       
   119 
       
   120   $ hg share main share-unshare
       
   121   updating working directory
       
   122   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   123   $ cd share-unshare
       
   124   $ hg unshare
       
   125   $ hg verify
       
   126   checking changesets
       
   127   checking manifests
       
   128   checking directory manifests (tree !)
       
   129   crosschecking files in changesets and manifests
       
   130   checking files
       
   131   checked 11 changesets with 3 changes to 3 files
       
   132   $ cd ..