# sqlitestore

Contents

- Description

store repository data in SQLite (EXPERIMENTAL)

# Description

The sqlitestore extension enables the storage of repository data in SQLite.

This extension is HIGHLY EXPERIMENTAL. There are NO BACKWARDS COMPATIBILITY GUARANTEES. This means that repositories created with this extension may only be usable with the exact version of this extension/Mercurial that was used. The extension attempts to enforce this in order to prevent repository corruption.

In addition, several features are not yet supported or have known bugs:

- Only some data is stored in SQLite. Changeset, manifest, and other repository data is not yet stored in SQLite.
- Transactions are not robust. If the process is aborted at the right time during transaction close/rollback, the repository could be in an inconsistent state. This problem will diminish once all repository data is tracked by SQLite.
- Bundle repositories do not work (the ability to use e.g. hg -R <bundle-file> log to automatically overlay a bundle on top of the existing repository).
- Various other features don't work.

This extension should work for basic clone/pull, update, and commit workflows. Some history rewriting operations may fail due to lack of support for bundle repositories.

To use, activate the extension and set the `storage.new-repo-backend` config option to `sqlite` to enable new repositories to use SQLite for storage.