tests/test-status-tracked-key.t
changeset 48698 568f63b5a30f
child 48774 79a967128055
equal deleted inserted replaced
48697:111f5a0cbcaa 48698:568f63b5a30f
       
     1 ==============================
       
     2 Test the "tracked key" feature
       
     3 ==============================
       
     4 
       
     5 The tracked key feature provide a file that get updated when the set of tracked
       
     6 files get updated.
       
     7 
       
     8 basic setup
       
     9 
       
    10   $ cat << EOF >> $HGRCPATH
       
    11   > [format]
       
    12   > exp-dirstate-tracked-key-version=1
       
    13   > EOF
       
    14 
       
    15   $ hg init tracked-key-test
       
    16   $ cd tracked-key-test
       
    17   $ hg debugbuilddag '.+10' -n
       
    18   $ hg log -G -T '{rev} {desc} {files}\n'
       
    19   o  10 r10 nf10
       
    20   |
       
    21   o  9 r9 nf9
       
    22   |
       
    23   o  8 r8 nf8
       
    24   |
       
    25   o  7 r7 nf7
       
    26   |
       
    27   o  6 r6 nf6
       
    28   |
       
    29   o  5 r5 nf5
       
    30   |
       
    31   o  4 r4 nf4
       
    32   |
       
    33   o  3 r3 nf3
       
    34   |
       
    35   o  2 r2 nf2
       
    36   |
       
    37   o  1 r1 nf1
       
    38   |
       
    39   o  0 r0 nf0
       
    40   
       
    41   $ hg up tip
       
    42   11 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    43   $ hg files
       
    44   nf0
       
    45   nf1
       
    46   nf10
       
    47   nf2
       
    48   nf3
       
    49   nf4
       
    50   nf5
       
    51   nf6
       
    52   nf7
       
    53   nf8
       
    54   nf9
       
    55 
       
    56 key-file exists
       
    57 -----------
       
    58 
       
    59 The tracked key file should exist
       
    60 
       
    61   $ ls -1 .hg/dirstate*
       
    62   .hg/dirstate
       
    63   .hg/dirstate-tracked-key
       
    64 
       
    65 key-file stay the same if the tracked set is unchanged
       
    66 ------------------------------------------------------
       
    67 
       
    68 (copy its content for later comparison)
       
    69 
       
    70   $ cp .hg/dirstate-tracked-key ../key-bck
       
    71   $ echo foo >> nf0
       
    72   $ sleep 1
       
    73   $ hg status
       
    74   M nf0
       
    75   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
    76   $ hg revert -C nf0
       
    77   $ sleep 1
       
    78   $ hg status
       
    79   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
    80 
       
    81 key-file change if the tracked set is changed manually
       
    82 ------------------------------------------------------
       
    83 
       
    84 adding a file to tracking
       
    85 
       
    86   $ cp .hg/dirstate-tracked-key ../key-bck
       
    87   $ echo x > x
       
    88   $ hg add x
       
    89   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
    90   Files .hg/dirstate-tracked-key and ../key-bck differ
       
    91   [1]
       
    92 
       
    93 remove a file from tracking
       
    94 (forget)
       
    95 
       
    96   $ cp .hg/dirstate-tracked-key ../key-bck
       
    97   $ hg forget x
       
    98   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
    99   Files .hg/dirstate-tracked-key and ../key-bck differ
       
   100   [1]
       
   101 
       
   102 (remove)
       
   103 
       
   104   $ cp .hg/dirstate-tracked-key ../key-bck
       
   105   $ hg remove nf1
       
   106   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
   107   Files .hg/dirstate-tracked-key and ../key-bck differ
       
   108   [1]
       
   109 
       
   110 key-file changes on revert (when applicable)
       
   111 --------------------------------------------
       
   112 
       
   113   $ cp .hg/dirstate-tracked-key ../key-bck
       
   114   $ hg status
       
   115   R nf1
       
   116   ? x
       
   117   $ hg revert --all
       
   118   undeleting nf1
       
   119   $ hg status
       
   120   ? x
       
   121   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
   122   Files .hg/dirstate-tracked-key and ../key-bck differ
       
   123   [1]
       
   124 
       
   125 
       
   126 `hg update` does affect the key-file (when needed)
       
   127 --------------------------------------------------
       
   128 
       
   129 update changing the tracked set
       
   130 
       
   131 (removing)
       
   132 
       
   133   $ cp .hg/dirstate-tracked-key ../key-bck
       
   134   $ hg status --rev . --rev '.#generations[-1]'
       
   135   R nf10
       
   136   $ hg up '.#generations[-1]'
       
   137   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   138   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
   139   Files .hg/dirstate-tracked-key and ../key-bck differ
       
   140   [1]
       
   141 
       
   142 (adding)
       
   143 
       
   144   $ cp .hg/dirstate-tracked-key ../key-bck
       
   145   $ hg status --rev . --rev '.#generations[1]'
       
   146   A nf10
       
   147   $ hg up '.#generations[1]'
       
   148   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   149   $ diff --brief .hg/dirstate-tracked-key ../key-bck
       
   150   Files .hg/dirstate-tracked-key and ../key-bck differ
       
   151   [1]
       
   152 
       
   153 update not affecting the tracked set
       
   154 
       
   155   $ echo foo >> nf0
       
   156   $ hg commit -m foo
       
   157 
       
   158   $ cp .hg/dirstate-tracked-key ../key-bck
       
   159   $ hg status --rev . --rev '.#generations[-1]'
       
   160   M nf0
       
   161   $ hg up '.#generations[-1]'
       
   162   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   163   $ diff --brief .hg/dirstate-tracked-key ../key-bck