tests/test-status-tracked-key.t
branchstable
changeset 48796 c00d3ce4e94b
parent 48793 6e559391f96e
child 48801 94635b74b18c
equal deleted inserted replaced
48776:b84ff512b645 48796:c00d3ce4e94b
       
     1 ===============================
       
     2 Test the "tracked hint" feature
       
     3 ===============================
       
     4 
       
     5 The tracked hint 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   > use-dirstate-tracked-hint=yes
       
    13   > EOF
       
    14 
       
    15   $ hg init tracked-hint-test
       
    16   $ cd tracked-hint-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 hint file should exist
       
    60 
       
    61   $ ls -1 .hg/dirstate*
       
    62   .hg/dirstate
       
    63   .hg/dirstate-tracked-hint
       
    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-hint ../key-bck
       
    71   $ echo foo >> nf0
       
    72   $ sleep 1
       
    73   $ hg status
       
    74   M nf0
       
    75   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
       
    76   $ hg revert -C nf0
       
    77   $ sleep 1
       
    78   $ hg status
       
    79   $ diff --brief .hg/dirstate-tracked-hint ../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-hint ../key-bck
       
    87   $ echo x > x
       
    88   $ hg add x
       
    89   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
       
    90   Files .hg/dirstate-tracked-hint and ../key-bck differ
       
    91   [1]
       
    92 
       
    93 remove a file from tracking
       
    94 (forget)
       
    95 
       
    96   $ cp .hg/dirstate-tracked-hint ../key-bck
       
    97   $ hg forget x
       
    98   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
       
    99   Files .hg/dirstate-tracked-hint and ../key-bck differ
       
   100   [1]
       
   101 
       
   102 (remove)
       
   103 
       
   104   $ cp .hg/dirstate-tracked-hint ../key-bck
       
   105   $ hg remove nf1
       
   106   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
       
   107   Files .hg/dirstate-tracked-hint and ../key-bck differ
       
   108   [1]
       
   109 
       
   110 key-file changes on revert (when applicable)
       
   111 --------------------------------------------
       
   112 
       
   113   $ cp .hg/dirstate-tracked-hint ../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-hint ../key-bck
       
   122   Files .hg/dirstate-tracked-hint 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-hint ../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-hint ../key-bck
       
   139   Files .hg/dirstate-tracked-hint and ../key-bck differ
       
   140   [1]
       
   141 
       
   142 (adding)
       
   143 
       
   144   $ cp .hg/dirstate-tracked-hint ../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-hint ../key-bck
       
   150   Files .hg/dirstate-tracked-hint 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-hint ../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-hint ../key-bck
       
   164 
       
   165 Test upgrade and downgrade
       
   166 ==========================
       
   167 
       
   168   $ ls .hg/dirstate-tracked-hint
       
   169   .hg/dirstate-tracked-hint
       
   170   $ hg debugrequires | grep 'tracked'
       
   171   dirstate-tracked-key-v1
       
   172 
       
   173 downgrade
       
   174 
       
   175   $ hg debugupgraderepo --config format.use-dirstate-tracked-hint=no --run --quiet
       
   176   upgrade will perform the following actions:
       
   177   
       
   178   requirements
       
   179      preserved: * (glob)
       
   180      removed: dirstate-tracked-key-v1
       
   181   
       
   182   no revlogs to process
       
   183   
       
   184   $ ls -1 .hg/dirstate-tracked-hint
       
   185   ls: cannot access '.hg/dirstate-tracked-hint': $ENOENT$
       
   186   [2]
       
   187   $ hg debugrequires | grep 'tracked'
       
   188   [1]
       
   189 
       
   190 upgrade
       
   191 
       
   192   $ hg debugupgraderepo --config format.use-dirstate-tracked-hint=yes --run --quiet
       
   193   upgrade will perform the following actions:
       
   194   
       
   195   requirements
       
   196      preserved: * (glob)
       
   197      added: dirstate-tracked-key-v1
       
   198   
       
   199   no revlogs to process
       
   200   
       
   201   $ ls -1 .hg/dirstate-tracked-hint
       
   202   .hg/dirstate-tracked-hint
       
   203   $ hg debugrequires | grep 'tracked'
       
   204   dirstate-tracked-key-v1