sapling/eden/scm/tests/test-zstore-commit-data-migration-t.py
Jun Wu ffc85f7222 changelog: add a way to migrate up and down with zstore-commit-data format
Summary:
This makes it possible to use zstore instead of 00changelog.d to store commit
data. Right now it double writes to zstore and 00changelog.d if turned on.
In the future we can switch to only writing to zstore if 00changelog.i
alternative is available.

Some related configs were added for fallback strategy: revlog or server.
The revlog fallback allows us to do fast migration. The server fallback
(not implemented in this diff) allows us to stop depending on revlog.d.

Reviewed By: DurhamG

Differential Revision: D18737260

fbshipit-source-id: 3c9605f0babd8a215ee74bdf1275cc4e9dbd766c
2020-01-10 19:01:43 -08:00

88 lines
1.5 KiB
Python

# Copyright (c) Facebook, Inc. and its affiliates.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2.
from __future__ import absolute_import
from testutil.dott import feature, sh, testtmp # noqa: F401
# Test turning zstore-commit-data on and off
sh % "setconfig format.use-zstore-commit-data=off"
sh % "newrepo"
sh % "drawdag" << r"""
B C
|/
A
"""
# Migrate up (double-writes to zstore and 00changelog.d).
sh % "setconfig format.use-zstore-commit-data=on"
sh % 'hg log -r "$C" -T "{desc}\\n"' == "C"
# Create new commits.
sh % "drawdag" << r"""
F
/|
D E
| |
desc(C)
"""
# With zstore-commit-data, 00changelog.d is not used for reading commits.
sh % "mv .hg/store/00changelog.d .hg/store/00changelog.d.bak"
sh % 'hg log -GT "{desc}"' == r"""
o F
|\
| o E
| |
o | D
|/
o C
|
| o B
|/
o A"""
# Migrate down. 00changelog.d becomes required.
sh % "setconfig format.use-zstore-commit-data=off"
sh % 'hg log -GT "{desc}"' == r"""
abort: *00changelog.d* (glob)
[255]"""
sh % "mv .hg/store/00changelog.d.bak .hg/store/00changelog.d"
sh % 'hg log -GT "{desc}"' == r"""
o F
|\
| o E
| |
o | D
|/
o C
|
| o B
|/
o A"""
# Create new commits.
sh % "drawdag" << r"""
H
|
G
|
desc(B)
"""
# Migrate up (double-writes to zstore and 00changelog.d).
sh % "setconfig format.use-zstore-commit-data=on"
sh % 'hg log -r "$H" -T "{desc}\\n"' == "H"