---
title: "Workspaces & branches"
description: "One Git repo per organization. Branches map to proposed changes."
---

import { Image } from 'astro:assets';
import cliUiGit from '../../../../assets/diagrams/cli-ui-git.svg';

Every organization in simple-plm has a **workspace** — a single Git repository of YAML files at `plm-data/`. There is no separate database for PLM records; the repo *is* the database. The dashboard, the `plm` CLI, and AI agents all read from and write commits to this repo.

<Image src={cliUiGit} alt="The dashboard UI, the plm CLI, and AI agents all converge on a single plm-data/ Git repo." />

## Branches map to proposals

When you propose a change — typically by opening an ECO — simple-plm creates a Git branch off `main` (e.g. `eco/ECO-2026-014`). Subsequent edits in the dashboard or CLI commit to that branch. When the ECO is approved, the branch merges into `main`. When it's rejected, the branch can be discarded or revised.

Branches let multiple ECOs progress in parallel without stepping on each other. The dashboard's branch switcher (top-left, next to the org switcher) lets you preview what the repo looks like on any open branch.

## Conflict resolution

If two ECOs touch the same line in the same file and both reach approval, Git surfaces a merge conflict. The dashboard exposes a three-way diff view so the second-approved ECO can be reconciled before merge. The conflict resolution itself is just a regular commit on the ECO branch.

## Why Git?

Engineering teams already trust Git for source code, schematics, and CAD. Putting PLM data in the same tool means:

- A single audit trail across firmware, mechanical, and PLM.
- No bespoke versioning system to learn.
- Easy backup, mirroring, and bring-your-own-storage.
- Branches and pull requests as a model your team already understands.

The trade-off is that very large attachments (gigabyte STEP files, lengthy datasheets) live as Git LFS objects, not raw blobs. The dashboard hides this; you're more likely to notice it if you clone the repo locally.
