tests/test-status-tracked-key.t
changeset 48793 6e559391f96e
parent 48792 8bbb1abb9d19
child 48801 94635b74b18c
equal deleted inserted replaced
48792:8bbb1abb9d19 48793:6e559391f96e
     1 ==============================
     1 ===============================
     2 Test the "tracked key" feature
     2 Test the "tracked hint" feature
     3 ==============================
     3 ===============================
     4 
     4 
     5 The tracked key feature provide a file that get updated when the set of tracked
     5 The tracked hint feature provide a file that get updated when the set of tracked
     6 files get updated.
     6 files get updated.
     7 
     7 
     8 basic setup
     8 basic setup
     9 
     9 
    10   $ cat << EOF >> $HGRCPATH
    10   $ cat << EOF >> $HGRCPATH
    11   > [format]
    11   > [format]
    12   > use-dirstate-tracked-key=yes
    12   > use-dirstate-tracked-hint=yes
    13   > EOF
    13   > EOF
    14 
    14 
    15   $ hg init tracked-key-test
    15   $ hg init tracked-hint-test
    16   $ cd tracked-key-test
    16   $ cd tracked-hint-test
    17   $ hg debugbuilddag '.+10' -n
    17   $ hg debugbuilddag '.+10' -n
    18   $ hg log -G -T '{rev} {desc} {files}\n'
    18   $ hg log -G -T '{rev} {desc} {files}\n'
    19   o  10 r10 nf10
    19   o  10 r10 nf10
    20   |
    20   |
    21   o  9 r9 nf9
    21   o  9 r9 nf9
    54   nf9
    54   nf9
    55 
    55 
    56 key-file exists
    56 key-file exists
    57 -----------
    57 -----------
    58 
    58 
    59 The tracked key file should exist
    59 The tracked hint file should exist
    60 
    60 
    61   $ ls -1 .hg/dirstate*
    61   $ ls -1 .hg/dirstate*
    62   .hg/dirstate
    62   .hg/dirstate
    63   .hg/dirstate-tracked-key
    63   .hg/dirstate-tracked-hint
    64 
    64 
    65 key-file stay the same if the tracked set is unchanged
    65 key-file stay the same if the tracked set is unchanged
    66 ------------------------------------------------------
    66 ------------------------------------------------------
    67 
    67 
    68 (copy its content for later comparison)
    68 (copy its content for later comparison)
    69 
    69 
    70   $ cp .hg/dirstate-tracked-key ../key-bck
    70   $ cp .hg/dirstate-tracked-hint ../key-bck
    71   $ echo foo >> nf0
    71   $ echo foo >> nf0
    72   $ sleep 1
    72   $ sleep 1
    73   $ hg status
    73   $ hg status
    74   M nf0
    74   M nf0
    75   $ diff --brief .hg/dirstate-tracked-key ../key-bck
    75   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
    76   $ hg revert -C nf0
    76   $ hg revert -C nf0
    77   $ sleep 1
    77   $ sleep 1
    78   $ hg status
    78   $ hg status
    79   $ diff --brief .hg/dirstate-tracked-key ../key-bck
    79   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
    80 
    80 
    81 key-file change if the tracked set is changed manually
    81 key-file change if the tracked set is changed manually
    82 ------------------------------------------------------
    82 ------------------------------------------------------
    83 
    83 
    84 adding a file to tracking
    84 adding a file to tracking
    85 
    85 
    86   $ cp .hg/dirstate-tracked-key ../key-bck
    86   $ cp .hg/dirstate-tracked-hint ../key-bck
    87   $ echo x > x
    87   $ echo x > x
    88   $ hg add x
    88   $ hg add x
    89   $ diff --brief .hg/dirstate-tracked-key ../key-bck
    89   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
    90   Files .hg/dirstate-tracked-key and ../key-bck differ
    90   Files .hg/dirstate-tracked-hint and ../key-bck differ
    91   [1]
    91   [1]
    92 
    92 
    93 remove a file from tracking
    93 remove a file from tracking
    94 (forget)
    94 (forget)
    95 
    95 
    96   $ cp .hg/dirstate-tracked-key ../key-bck
    96   $ cp .hg/dirstate-tracked-hint ../key-bck
    97   $ hg forget x
    97   $ hg forget x
    98   $ diff --brief .hg/dirstate-tracked-key ../key-bck
    98   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
    99   Files .hg/dirstate-tracked-key and ../key-bck differ
    99   Files .hg/dirstate-tracked-hint and ../key-bck differ
   100   [1]
   100   [1]
   101 
   101 
   102 (remove)
   102 (remove)
   103 
   103 
   104   $ cp .hg/dirstate-tracked-key ../key-bck
   104   $ cp .hg/dirstate-tracked-hint ../key-bck
   105   $ hg remove nf1
   105   $ hg remove nf1
   106   $ diff --brief .hg/dirstate-tracked-key ../key-bck
   106   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
   107   Files .hg/dirstate-tracked-key and ../key-bck differ
   107   Files .hg/dirstate-tracked-hint and ../key-bck differ
   108   [1]
   108   [1]
   109 
   109 
   110 key-file changes on revert (when applicable)
   110 key-file changes on revert (when applicable)
   111 --------------------------------------------
   111 --------------------------------------------
   112 
   112 
   113   $ cp .hg/dirstate-tracked-key ../key-bck
   113   $ cp .hg/dirstate-tracked-hint ../key-bck
   114   $ hg status
   114   $ hg status
   115   R nf1
   115   R nf1
   116   ? x
   116   ? x
   117   $ hg revert --all
   117   $ hg revert --all
   118   undeleting nf1
   118   undeleting nf1
   119   $ hg status
   119   $ hg status
   120   ? x
   120   ? x
   121   $ diff --brief .hg/dirstate-tracked-key ../key-bck
   121   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
   122   Files .hg/dirstate-tracked-key and ../key-bck differ
   122   Files .hg/dirstate-tracked-hint and ../key-bck differ
   123   [1]
   123   [1]
   124 
   124 
   125 
   125 
   126 `hg update` does affect the key-file (when needed)
   126 `hg update` does affect the key-file (when needed)
   127 --------------------------------------------------
   127 --------------------------------------------------
   128 
   128 
   129 update changing the tracked set
   129 update changing the tracked set
   130 
   130 
   131 (removing)
   131 (removing)
   132 
   132 
   133   $ cp .hg/dirstate-tracked-key ../key-bck
   133   $ cp .hg/dirstate-tracked-hint ../key-bck
   134   $ hg status --rev . --rev '.#generations[-1]'
   134   $ hg status --rev . --rev '.#generations[-1]'
   135   R nf10
   135   R nf10
   136   $ hg up '.#generations[-1]'
   136   $ hg up '.#generations[-1]'
   137   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   137   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   138   $ diff --brief .hg/dirstate-tracked-key ../key-bck
   138   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
   139   Files .hg/dirstate-tracked-key and ../key-bck differ
   139   Files .hg/dirstate-tracked-hint and ../key-bck differ
   140   [1]
   140   [1]
   141 
   141 
   142 (adding)
   142 (adding)
   143 
   143 
   144   $ cp .hg/dirstate-tracked-key ../key-bck
   144   $ cp .hg/dirstate-tracked-hint ../key-bck
   145   $ hg status --rev . --rev '.#generations[1]'
   145   $ hg status --rev . --rev '.#generations[1]'
   146   A nf10
   146   A nf10
   147   $ hg up '.#generations[1]'
   147   $ hg up '.#generations[1]'
   148   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   148   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   149   $ diff --brief .hg/dirstate-tracked-key ../key-bck
   149   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
   150   Files .hg/dirstate-tracked-key and ../key-bck differ
   150   Files .hg/dirstate-tracked-hint and ../key-bck differ
   151   [1]
   151   [1]
   152 
   152 
   153 update not affecting the tracked set
   153 update not affecting the tracked set
   154 
   154 
   155   $ echo foo >> nf0
   155   $ echo foo >> nf0
   156   $ hg commit -m foo
   156   $ hg commit -m foo
   157 
   157 
   158   $ cp .hg/dirstate-tracked-key ../key-bck
   158   $ cp .hg/dirstate-tracked-hint ../key-bck
   159   $ hg status --rev . --rev '.#generations[-1]'
   159   $ hg status --rev . --rev '.#generations[-1]'
   160   M nf0
   160   M nf0
   161   $ hg up '.#generations[-1]'
   161   $ hg up '.#generations[-1]'
   162   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   162   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   163   $ diff --brief .hg/dirstate-tracked-key ../key-bck
   163   $ diff --brief .hg/dirstate-tracked-hint ../key-bck
   164 
   164 
   165 Test upgrade and downgrade
   165 Test upgrade and downgrade
   166 ==========================
   166 ==========================
   167 
   167 
   168   $ ls .hg/dirstate-tracked-key
   168   $ ls .hg/dirstate-tracked-hint
   169   .hg/dirstate-tracked-key
   169   .hg/dirstate-tracked-hint
   170   $ hg debugrequires | grep 'tracked'
   170   $ hg debugrequires | grep 'tracked'
   171   dirstate-tracked-key-v1
   171   dirstate-tracked-key-v1
   172 
   172 
   173 downgrade
   173 downgrade
   174 
   174 
   175   $ hg debugupgraderepo --config format.use-dirstate-tracked-key=no --run --quiet
   175   $ hg debugupgraderepo --config format.use-dirstate-tracked-hint=no --run --quiet
   176   upgrade will perform the following actions:
   176   upgrade will perform the following actions:
   177   
   177   
   178   requirements
   178   requirements
   179      preserved: * (glob)
   179      preserved: * (glob)
   180      removed: dirstate-tracked-key-v1
   180      removed: dirstate-tracked-key-v1
   181   
   181   
   182   no revlogs to process
   182   no revlogs to process
   183   
   183   
   184   $ ls -1 .hg/dirstate-tracked-key
   184   $ ls -1 .hg/dirstate-tracked-hint
   185   ls: cannot access '.hg/dirstate-tracked-key': $ENOENT$
   185   ls: cannot access '.hg/dirstate-tracked-hint': $ENOENT$
   186   [2]
   186   [2]
   187   $ hg debugrequires | grep 'tracked'
   187   $ hg debugrequires | grep 'tracked'
   188   [1]
   188   [1]
   189 
   189 
   190 upgrade
   190 upgrade
   191 
   191 
   192   $ hg debugupgraderepo --config format.use-dirstate-tracked-key=yes --run --quiet
   192   $ hg debugupgraderepo --config format.use-dirstate-tracked-hint=yes --run --quiet
   193   upgrade will perform the following actions:
   193   upgrade will perform the following actions:
   194   
   194   
   195   requirements
   195   requirements
   196      preserved: * (glob)
   196      preserved: * (glob)
   197      added: dirstate-tracked-key-v1
   197      added: dirstate-tracked-key-v1
   198   
   198   
   199   no revlogs to process
   199   no revlogs to process
   200   
   200   
   201   $ ls -1 .hg/dirstate-tracked-key
   201   $ ls -1 .hg/dirstate-tracked-hint
   202   .hg/dirstate-tracked-key
   202   .hg/dirstate-tracked-hint
   203   $ hg debugrequires | grep 'tracked'
   203   $ hg debugrequires | grep 'tracked'
   204   dirstate-tracked-key-v1
   204   dirstate-tracked-key-v1