Mercurial > hg
view tests/test-strip-branch-cache.t @ 51550:463e63aa547c
stream-clone: disable gc for `_entries_walk` duration
The number of small container created turn Python in a gc-frenzy that seriously
impact performance.
This significantly boost performance. The following number comes from a large
private repository using perf::stream-locked-section:
base-line: 35.04 seconds
prev-change: 24.51 seconds (-30%)
this-change: 20.88 seconds (-40% from baseline; -15% from previous changes)
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 26 Mar 2024 13:32:46 +0000 |
parents | 82c1a388e86a |
children |
line wrap: on
line source
This test cover a bug that no longer exist. Define helpers. $ hg_log () { hg log -G -T "{rev}:{node|short}"; } $ commit () { echo "foo - ${2:-$1}" > $1; hg commit -Aqm "Edited $1"; } $ strip() { hg --config extensions.strip= strip -q -r "$1" ; } Setup hg repo. $ hg init repo $ cd repo $ touch x; hg add x; hg commit -m "initial" $ hg clone -q . ../clone $ commit a $ cd ../clone $ commit b $ hg pull -q ../repo $ ls -1 .hg/cache/branch?* .hg/cache/branch2-base .hg/cache/branch2-served $ cat .hg/cache/branch?-served 222ae9789a75703f9836e44de7db179cbfd420ee 2 a3498d6e39376d2456425dd8c692367bdbf00fa2 o default 222ae9789a75703f9836e44de7db179cbfd420ee o default $ hg_log o 2:222ae9789a75 | | @ 1:a3498d6e3937 |/ o 0:7ab0a3bd758a $ strip '1:' After the strip the "served" cache is now identical to the "base" one, and the older one have been actively deleted. $ ls -1 .hg/cache/branch?* .hg/cache/branch2-base $ cat .hg/cache/branch?-base 7ab0a3bd758a58b9f79557ce708533e627776cce 0 7ab0a3bd758a58b9f79557ce708533e627776cce o default We do a new commit and we get a new valid branchmap for the served version $ commit c $ ls -1 .hg/cache/branch?* .hg/cache/branch2-base .hg/cache/branch2-served $ cat .hg/cache/branch?-served a1602b357cfca067600406eb19060c7128804d72 1 a1602b357cfca067600406eb19060c7128804d72 o default On pull we end up with the same tip, and so wrongly reuse the invalid cache and crash. $ hg pull ../repo --quiet $ hg heads -T '{rev} {node} {branch}\n' 2 222ae9789a75703f9836e44de7db179cbfd420ee default 1 a1602b357cfca067600406eb19060c7128804d72 default $ ls -1 .hg/cache/branch?* .hg/cache/branch2-base .hg/cache/branch2-served $ cat .hg/cache/branch?-served 222ae9789a75703f9836e44de7db179cbfd420ee 2 a1602b357cfca067600406eb19060c7128804d72 o default 222ae9789a75703f9836e44de7db179cbfd420ee o default