How It Works
Under the hood, MixRestore uses Git for version tracking. This page explains the technical details for users who want to understand what's happening on disk.
Git repositories
When you initialize tracking for a project, MixRestore creates a Git repository
in your Ableton project folder. This adds a hidden .git directory that
stores the full version history.
Your project files are never moved or modified by MixRestore. The .git
folder can be safely deleted if you ever want to remove version tracking — your
project files remain untouched.
File watching
MixRestore uses filesystem watchers (via chokidar) to monitor your project
folder. When changes are detected:
- A debounce timer ensures the save is complete (prevents capturing partial writes)
- Changed files are staged with
git add - A commit is created with a timestamp and auto-generated message
Project parsing
Ableton .als files are gzip-compressed XML. MixRestore decompresses and
parses them to extract metadata like BPM, key, time signature, track counts, samples,
and arrangement locators. This parsing happens on each version to keep metadata current.
Storage
Version history is stored efficiently by Git's delta compression. Even for large projects,
the .git folder typically stays small because Git only stores the differences
between versions.
Project metadata (BPM, track counts, etc.) is stored in a local SQLite database within MixRestore's application data folder for fast access.
Compatibility with Git tools
Since MixRestore uses standard Git repositories, you can use any Git tool to inspect the history if you wish. However, modifying the repository externally (rebasing, force-pushing, etc.) may cause MixRestore's UI to show unexpected state.