Projection: A JJ Workflow for splitting public and private files
Projection is a JJ workflow that lets developers split a repository into public and private files, managing sensitive data and open-source code separately within the same project.
Background
- "JJ" is a modern version-control system (VCS) created by Google engineer Martin Geisler, designed as an alternative to Git. It aims to simplify workflows around branching, history rewriting, and collaboration.
- A common tension in open-source development is keeping certain files (API keys, internal TODOs, unfinished specs) private while making the rest of the project public (e.g., on GitHub).
- This post proposes a "Projection" workflow in JJ that uses the tool's native "anonymous branching" and "squashing" features to maintain two views of the same repo: a full private version and a cleaned public version, without messy manual copying or separate history.