tests/test-strip-branch-cache.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 07 Mar 2024 04:15:23 +0100
changeset 51536 718f28ea3af4
parent 51493 82c1a388e86a
permissions -rw-r--r--
branchcache: add a "pure topological head" fast path In a narrow but actually quick common case, all topological heads are all on the same branch and all open. In this case, computing the branch map is very simple. We can quickly detect situation where this situation will not change. So we update the V3 format to be able to express this situation and upgrade the update code to detect we remains in that mode. The branch cache is populated with the actual value when the branch map is accessed, but the update_disk method can do the update without needing to populate it.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
     1
This test cover a bug that no longer exist.
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
     2
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     3
Define helpers.
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     4
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     5
  $ hg_log () { hg log -G -T "{rev}:{node|short}"; }
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     6
  $ commit () { echo "foo - ${2:-$1}" > $1; hg commit -Aqm "Edited $1"; }
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     7
  $ strip() { hg --config extensions.strip= strip -q -r "$1" ; }
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     8
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     9
Setup hg repo.
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    10
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    11
  $ hg init repo
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    12
  $ cd repo
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    13
  $ touch x; hg add x; hg commit -m "initial"
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    14
  $ hg clone -q . ../clone
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    15
  $ commit a
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    16
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    17
  $ cd ../clone
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    18
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    19
  $ commit b
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    20
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    21
  $ hg pull -q ../repo
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    22
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    23
  $ ls -1 .hg/cache/branch?*
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    24
  .hg/cache/branch2-base
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    25
  .hg/cache/branch2-served
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    26
  $ cat .hg/cache/branch?-served
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    27
  222ae9789a75703f9836e44de7db179cbfd420ee 2
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    28
  a3498d6e39376d2456425dd8c692367bdbf00fa2 o default
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    29
  222ae9789a75703f9836e44de7db179cbfd420ee o default
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    30
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    31
  $ hg_log
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    32
  o  2:222ae9789a75
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    33
  |
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    34
  | @  1:a3498d6e3937
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    35
  |/
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    36
  o  0:7ab0a3bd758a
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    37
  
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    38
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    39
  $ strip '1:'
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    40
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    41
After the strip the "served" cache is now identical to the "base" one, and the
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    42
older one have been actively deleted.
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    43
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    44
  $ ls -1 .hg/cache/branch?*
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    45
  .hg/cache/branch2-base
51493
82c1a388e86a branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51492
diff changeset
    46
  $ cat .hg/cache/branch?-base
82c1a388e86a branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51492
diff changeset
    47
  7ab0a3bd758a58b9f79557ce708533e627776cce 0
82c1a388e86a branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51492
diff changeset
    48
  7ab0a3bd758a58b9f79557ce708533e627776cce o default
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    49
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    50
We do a new commit and we get a new valid branchmap for the served version
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    51
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    52
  $ commit c
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    53
  $ ls -1 .hg/cache/branch?*
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    54
  .hg/cache/branch2-base
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    55
  .hg/cache/branch2-served
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    56
  $ cat .hg/cache/branch?-served
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    57
  a1602b357cfca067600406eb19060c7128804d72 1
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    58
  a1602b357cfca067600406eb19060c7128804d72 o default
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    59
49071
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    60
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    61
On pull we end up with the same tip, and so wrongly reuse the invalid cache and crash.
9caf23927d04 branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    62
51492
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    63
  $ hg pull ../repo --quiet
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    64
  $ hg heads -T '{rev} {node} {branch}\n'
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    65
  2 222ae9789a75703f9836e44de7db179cbfd420ee default
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    66
  1 a1602b357cfca067600406eb19060c7128804d72 default
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    67
  $ ls -1 .hg/cache/branch?*
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    68
  .hg/cache/branch2-base
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    69
  .hg/cache/branch2-served
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    70
  $ cat .hg/cache/branch?-served
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    71
  222ae9789a75703f9836e44de7db179cbfd420ee 2
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    72
  a1602b357cfca067600406eb19060c7128804d72 o default
2e8a88e5809f branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49071
diff changeset
    73
  222ae9789a75703f9836e44de7db179cbfd420ee o default