tests/test-revlog-v2.t
author Raphaël Gomès <rgomes@octobus.net>
Wed, 06 Sep 2023 18:12:27 +0200
changeset 50936 6408777c8fa4
parent 49825 2f2682f40ea0
permissions -rw-r--r--
branching: merge stable into default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37345
b09a25d74592 tests: disable test-revlog-v2 when using simple store
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36485
diff changeset
     1
#require reporevlogstore
b09a25d74592 tests: disable test-revlog-v2 when using simple store
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36485
diff changeset
     2
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     3
A repo with unknown revlogv2 requirement string cannot be opened
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     4
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     5
  $ hg init invalidreq
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     6
  $ cd invalidreq
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     7
  $ echo exp-revlogv2.unknown >> .hg/requires
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     8
  $ hg log
45906
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 45370
diff changeset
     9
  abort: repository requires features unknown to this Mercurial: exp-revlogv2.unknown
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    10
  (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    11
  [255]
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    12
  $ cd ..
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    13
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    14
Can create and open repo with revlog v2 requirement
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    15
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    16
  $ cat >> $HGRCPATH << EOF
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    17
  > [experimental]
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    18
  > revlogv2 = enable-unstable-format-and-corrupt-my-data
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    19
  > EOF
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    20
47449
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    21
  $ hg init new-repo
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    22
  $ cd new-repo
48659
6dde44bb99da test: simpler requirement matching in test-revlog-v2.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48464
diff changeset
    23
  $ hg debugrequires | grep revlogv2
46704
913485776542 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net>
parents: 46116
diff changeset
    24
  exp-revlogv2.2
48659
6dde44bb99da test: simpler requirement matching in test-revlog-v2.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48464
diff changeset
    25
  dirstate-v2 (dirstate-v2 !)
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    26
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    27
  $ hg log
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    28
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    29
Unknown flags to revlog are rejected
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    30
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    31
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
45370
15d35f2ba474 tests: make flag parsing test more future safe
Joerg Sonnenberger <joerg@bec.de>
parents: 41202
diff changeset
    32
  ...     fh.write(b'\xff\x00\xde\xad') and None
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    33
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    34
  $ hg log
47157
3a9f3470922c revlog: use revlog.display_id in format related errors
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46884
diff changeset
    35
  abort: unknown flags (0xff00) in version 57005 revlog 00changelog
46116
17a695357270 errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
    36
  [50]
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    37
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    38
  $ cd ..
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    39
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    40
Writing a simple revlog v2 works
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    41
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    42
  $ hg init simple
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    43
  $ cd simple
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    44
  $ touch foo
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    45
  $ hg -q commit -A -m initial
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    46
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    47
  $ hg log
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    48
  changeset:   0:96ee1d7354c4
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    49
  tag:         tip
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    50
  user:        test
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    51
  date:        Thu Jan 01 00:00:00 1970 +0000
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    52
  summary:     initial
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    53
  
47324
0a3fa41fa719 revlogv2: use a unique filename for data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47323
diff changeset
    54
41202
e7a2cc84dbc0 revlog: always enable generaldelta on version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40919
diff changeset
    55
Header written as expected
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    56
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    57
  $ f --hexdump --bytes 4 .hg/store/00changelog.i
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    58
  .hg/store/00changelog.i:
47261
80164d50ae3d revlogv2: no longer attempt to use inline for new revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47221
diff changeset
    59
  0000: 00 00 de ad                                     |....|
32697
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    60
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    61
  $ f --hexdump --bytes 4 .hg/store/data/foo.i
19b9fc40cc51 revlog: skeleton support for version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    62
  .hg/store/data/foo.i:
47261
80164d50ae3d revlogv2: no longer attempt to use inline for new revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47221
diff changeset
    63
  0000: 00 00 de ad                                     |....|
47323
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    64
47342
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    65
Bundle use a compatible changegroup format
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    66
------------------------------------------
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    67
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    68
  $ hg bundle --all ../basic.hg
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    69
  1 changesets found
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    70
  $ hg debugbundle --spec ../basic.hg
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    71
  bzip2-v2
dc3800569157 revlogv2: make sure bundling pick a compatible bundle format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47324
diff changeset
    72
47323
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    73
The expected files are generated
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    74
--------------------------------
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    75
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    76
We should have have:
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    77
- a docket
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    78
- a index file with a unique name
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    79
- a data file
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    80
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    81
  $ ls .hg/store/00changelog* .hg/store/00manifest*
47389
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    82
  .hg/store/00changelog-1335303a.sda
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    83
  .hg/store/00changelog-6b8ab34b.idx
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    84
  .hg/store/00changelog-b875dfc5.dat
47323
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    85
  .hg/store/00changelog.i
47389
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    86
  .hg/store/00manifest-05a21d65.idx
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    87
  .hg/store/00manifest-43c37dde.dat
e6292eb33384 revlog: store sidedata in their own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47342
diff changeset
    88
  .hg/store/00manifest-e2c9362a.sda
47323
f612db768c7a revlogv2: use a unique filename for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
    89
  .hg/store/00manifest.i
47449
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    90
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    91
Local clone works
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    92
-----------------
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    93
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    94
  $ hg clone . ../cloned-repo
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    95
  updating to branch default
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    96
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    97
  $ hg tip | tee ../tip-new
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    98
  changeset:   0:96ee1d7354c4
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
    99
  tag:         tip
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   100
  user:        test
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   101
  date:        Thu Jan 01 00:00:00 1970 +0000
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   102
  summary:     initial
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   103
  
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   104
  $ hg tip -R ../cloned-repo | tee ../tip-cloned
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   105
  changeset:   0:96ee1d7354c4
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   106
  tag:         tip
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   107
  user:        test
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   108
  date:        Thu Jan 01 00:00:00 1970 +0000
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   109
  summary:     initial
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   110
  
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   111
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   112
The two repository should be identical, this diff MUST be empty
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   113
da3fb8c10caa revlogv2: also test that local clone works
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47389
diff changeset
   114
  $ cmp ../tip-new ../tip-cloned || diff -U8 ../tip-new ../tip-cloned
47450
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   115
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   116
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   117
hg verify should be happy
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   118
-------------------------
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   119
49825
2f2682f40ea0 tests: use the `--quiet` flag for verify when applicable
Raphaël Gomès <rgomes@octobus.net>
parents: 48659
diff changeset
   120
  $ hg verify -q
47450
9cecc222c536 revlogv2: fix `hg verify` with revlog v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47449
diff changeset
   121
49825
2f2682f40ea0 tests: use the `--quiet` flag for verify when applicable
Raphaël Gomès <rgomes@octobus.net>
parents: 48659
diff changeset
   122
  $ hg verify -R ../cloned-repo -q