Mercurial > public > mercurial-scm > hg-stable
diff tests/test-copies-in-changeset.t @ 45636:9a6b409b8ebc
changing-files: rework the way we store changed files in side-data
We need to store new data so this is a good opportunity to rework this fully.
1) We directly store the list of affected file in the side data:
* This avoid having to fetch and parse the `files` list in the revision in
addition to the sidedata. Making the data more self sufficient.
* This work around situation where that `files` field contains wrong
information, and open the way to other bug fixing (eg: issue6219)
* The format (fixed initial index, sorted files) allow for fast lookup of
filename within the structure.
* This unify the storage of affected files and copies sources and destination,
limiting the number filename stored redundantly.
* This prepare for the fact we should drop the `files` as soon as we do any
change affecting the revision schema.
* This rely on compression to avoid a significant increase of the changelog.d.
More testing on this will be done before we freeze the final format.
2) We can store additional data:
* The new "merged" field,
* A future "salvaged" set recording files that might have been deleted but have
were still present in the final result.
Differential Revision: https://phab.mercurial-scm.org/D9090
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 15 Sep 2020 10:55:17 +0200 |
parents | ea9563e9e65a |
children | f90a5c211251 |
line wrap: on
line diff
--- a/tests/test-copies-in-changeset.t Mon Oct 05 10:33:52 2020 +0200 +++ b/tests/test-copies-in-changeset.t Tue Sep 15 10:55:17 2020 +0200 @@ -79,11 +79,9 @@ 2\x00a (esc) #else $ hg debugsidedata -c -v -- -1 - 2 sidedata entries - entry-0010 size 11 - '0\x00a\n1\x00a\n2\x00a' - entry-0012 size 5 - '0\n1\n2' + 1 sidedata entries + entry-0014 size 44 + '\x00\x00\x00\x04\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00abcd' #endif $ hg showcopies @@ -117,13 +115,9 @@ #else $ hg debugsidedata -c -v -- -1 - 3 sidedata entries - entry-0010 size 3 - '1\x00b' - entry-0012 size 1 - '1' - entry-0013 size 1 - '0' + 1 sidedata entries + entry-0014 size 25 + '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00bb2' #endif $ hg showcopies @@ -165,8 +159,8 @@ #else $ hg debugsidedata -c -v -- -1 1 sidedata entries - entry-0010 size 4 - '0\x00b2' + entry-0014 size 25 + '\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x00\x00\x00\x16\x00\x00\x00\x03\x00\x00\x00\x00b2c' #endif $ hg showcopies @@ -221,13 +215,9 @@ #else $ hg debugsidedata -c -v -- -1 - 3 sidedata entries - entry-0010 size 7 - '0\x00a\n2\x00f' - entry-0011 size 3 - '1\x00d' - entry-0012 size 5 - '0\n1\n2' + 1 sidedata entries + entry-0014 size 64 + '\x00\x00\x00\x06\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x01\x06\x00\x00\x00\x06\x00\x00\x00\x02adfghi' #endif $ hg showcopies @@ -250,11 +240,9 @@ #else $ hg ci -m 'copy a to j' $ hg debugsidedata -c -v -- -1 - 2 sidedata entries - entry-0010 size 3 - '0\x00a' - entry-0012 size 1 - '0' + 1 sidedata entries + entry-0014 size 24 + '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00aj' #endif $ hg debugdata j 0 \x01 (esc) @@ -281,11 +269,9 @@ $ hg ci --amend -m 'copy a to j, v2' saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob) $ hg debugsidedata -c -v -- -1 - 2 sidedata entries - entry-0010 size 3 - '0\x00a' - entry-0012 size 1 - '0' + 1 sidedata entries + entry-0014 size 24 + '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00aj' #endif $ hg showcopies --config experimental.copies.read-from=filelog-only a -> j @@ -304,6 +290,9 @@ #else $ hg ci -m 'modify j' $ hg debugsidedata -c -v -- -1 + 1 sidedata entries + entry-0014 size 14 + '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00j' #endif Test writing only to filelog @@ -318,11 +307,9 @@ #else $ hg ci -m 'copy a to k' $ hg debugsidedata -c -v -- -1 - 2 sidedata entries - entry-0010 size 3 - '0\x00a' - entry-0012 size 1 - '0' + 1 sidedata entries + entry-0014 size 24 + '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ak' #endif $ hg debugdata k 0 @@ -439,10 +426,10 @@ compression-level: default default default $ hg debugsidedata -c -- 0 1 sidedata entries - entry-0012 size 1 + entry-0014 size 14 $ hg debugsidedata -c -- 1 1 sidedata entries - entry-0013 size 1 + entry-0014 size 14 $ hg debugsidedata -m -- 0 $ cat << EOF > .hg/hgrc > [format] @@ -463,7 +450,11 @@ compression: zlib zlib zlib compression-level: default default default $ hg debugsidedata -c -- 0 + 1 sidedata entries + entry-0014 size 14 $ hg debugsidedata -c -- 1 + 1 sidedata entries + entry-0014 size 14 $ hg debugsidedata -m -- 0 upgrading @@ -487,10 +478,10 @@ compression-level: default default default $ hg debugsidedata -c -- 0 1 sidedata entries - entry-0012 size 1 + entry-0014 size 14 $ hg debugsidedata -c -- 1 1 sidedata entries - entry-0013 size 1 + entry-0014 size 14 $ hg debugsidedata -m -- 0 #endif