Legacy Datasets
Legacy Table Datasets
Kart Version |
Kart’s name at the time |
Repository structure version |
---|---|---|
0.0 to 0.1 |
Snowdrop |
Table Datasets V0 |
0.2 to 0.4 |
Sno |
Table Datasets V1 |
0.5 to 0.8 |
Sno |
Table Datasets V2 |
0.9 |
Kart |
Table Datasets V2 |
0.10 |
Kart |
Table Datasets V3 (but v2 still supported) |
The current version of the Table Datasets storage format is Table Datasets V3. In this storage format, each row is stored in a separate file. This means table rows can be stored using git-style version control, resulting in a database-table which has version history.
The main improvement of Table Datasets V3 is how the rows are divided into different folders (or “trees” in git terminology) for more efficient storage when there are a large number of revisions and features. See Table Datasets V2 for more information on the preivous system.
The main improvement of Table Datasets V2 is that the schema of a table can be changed in isolation without having to rewrite every row in the table. Rows that were written with a previous schema are adapted to fit the current schema when read. See Table Datasets V1 for more information on the previous system.
Legacy Repositories
Earlier in Kart’s history, the most fundamental feature of a Kart repository was which
of these table-dataset versions it was using. This information was global to the entire repo
and so was stored in a blob at the root-tree called .kart.repostructure.version
.
This blob is still present in newer Kart repos, but now in practice always contains nothing but the number ‘3’, and provides no further information about what other types of datasets the repository may contain. For newer dataset types (such as Point Clouds) the version information is stored alongside within the dataset itself, so global version markers like this are no longer necessary for other types of dataset.
If a Kart repo does not contain a .kart.repostructure.version
blob with the number ‘3’ in it, then
it is a legacy repository and can be upgraded. Legacy table datasets are only found in legacy repositories.
Upgrading
To upgrade a Kart repository to the latest supported repository
structure, run kart upgrade SOURCE DEST
where SOURCE
is the path
to the existing repo, and DEST
is the path to where the upgraded
repo will be created. This will rewrite your repository history — all
commit information is preserved but the commit identifiers will all
change. Merging changes across upgrades will not work out.