- Edited
tuxlover4 hey
So all the "real" files will be in /.moss/assets
and stored by xxhash ID. Each root is in /.moss/root
and we use a special staging tree to prepare a new transaction. "Promoting" the root swaps the staging tree with the current /usr
.
A number of databases live in /.moss/db
.
- StateDB: All transactions coupled with the list of package IDs they needed
- LayoutDB: Describe the filesystem layout for every package by unique ID (on all transactions)
- InstallDB: Metadata (and dependencies) for installed packages (on all transactions)
- MetaDB: Per repository, provides quick DB cache for each repository in the layer system
When we produce a new transaction we simply read the relevant entries from the LayoutDB and blit files from assets
into the new transaction.