Sharing with Others
Each developer has a local database. Here's how to share decisions across a team.
The Challenge
The decision graph lives in .deciduous/deciduous.db, which is gitignored. This is intentional—SQLite databases don't merge well in git.
But teams need to share decisions. When Alice makes architectural choices on her branch, Bob should be able to see them. When that branch merges, everyone should have the context.
The Solution: Patches
Deciduous uses a jj-inspired patch model. Instead of sharing the database, you share patches—JSON files containing nodes and edges.
Each node has two IDs:
| ID Type | Purpose |
|---|---|
id (integer) |
Local database primary key, different on each machine |
change_id (UUID) |
Globally unique, stable across all databases |
Patches use the change_id to identify nodes. When you apply a patch, nodes are matched by their UUID, not their local ID.
The Workflow
- Export your branch's decisions as a patch file
- Commit the patch file (not the database)
- Teammates pull and apply the patch
- Idempotent—applying the same patch twice is safe
What's in This Chapter
- The Multi-User Problem — Understanding why this approach is needed
- Exporting Patches — How to export and apply patches
- The PR Workflow — Integrating patches into your PR process