Previously, all branch2-* caches were stored in .hg/cache, which is shared
across repos when using hg share. This can cause cache thrashing when the
repos are accessed concurrently, since some of the caches depend on wdir state
(which is NOT shared across the repos).
There's already a cache directory for caches that depend on wdir state, wcache,
so let's just put the caches there.
This change does not clean up any existing caches in .hg/cache that are now
moved to the new location, and it does not re-use the caches from that location
when constructing them in the wcache directory. Upgrades to versions of
Mercurial that have this commit will need to regenerate their branchheads once, and
this may be an expensive operation.
The format of these cache files is not changing - forwards/backwards
compatibility remains; if a newer repo (with these in wcache) is accessed by an
older hg, the older hg will either see the files that remain in .hg/cache, and
update them there, or will not see the files at all and will fall back to a
slower path (and then likely cache them in .hg/cache). If it's then accessed by
a newer hg, the work done by the older hg is ignored, and the wcache copies are
brought up to date.