Versioning¶
Bundlebase has a built-in versioning system. Every time you call commit(), a new version is created with all your changes.
Until commit() is called, any changes you have made remain in-memory and only apply to your bundle instance. To share changes, you must commit.
Committing Changes¶
Viewing Version and History¶
Status¶
View uncommitted changes in the bundle.
Reset¶
Discard all uncommitted changes, reverting to the last committed state.
Undo¶
Undo the last uncommitted operation. Can be called multiple times to undo several operations, or use UNDO LAST N to undo multiple at once.
Verify Data¶
Verify the integrity of all files in the bundle by checking SHA256 hashes.
Format Compatibility¶
Every bundle records the minimum and maximum bundlebase version required to open it. These are set automatically when a bundle is created and track the major.minor version (e.g., 0.9).
When opening a bundle:
- If the current bundlebase version is below the bundle's minimum version, an error is returned. This means the bundle uses features that this version of bundlebase doesn't support.
- If the current bundlebase version is above the bundle's maximum version, an error is returned with a suggestion to upgrade.
Old bundles created before version tracking was added will open without restriction.
Upgrading a Bundle¶
When you update bundlebase to a newer version, existing bundles may need their version range updated.
This updates the bundle's min and max version to match the current bundlebase version, committing the change. The upgrade writes directly to the bundle's manifest without opening it, so it works even when the version mismatch would prevent a normal open.
Manifest System¶
Bundlebase uses a versioned manifest system for tracking commits:
- Location:
{data_dir}/_bundlebase/directory - Format: YAML files with 5-digit version + 12-character hash
- Example:
00001a1b2c3d4e5f6.yaml - Each commit can contain multiple "changes" which are the modifications to the bundle
Example commit file¶
author: nvoxland
message: Indexed
timestamp: 2026-01-08T07:24:18Z
changes:
- id: 11675b7b-8aca-4187-a38d-bfda4d739e0e
description: Attach file:///path/to/customers-0-100.csv
operations:
- type: definePack
id: '56'
- type: attachBlock
source: file:///path/to/customers-0-100.csv
version: 846acd3-64650a58fdd47-4308
id: '09'
packId: '56'