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:

  1. A debounce timer ensures the save is complete (prevents capturing partial writes)
  2. Changed files are staged with git add
  3. 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.