Scene & asset VCS integration (JSON merge driver, binary diff, LFS advice)
Motivation
The single biggest pain point for teams using any game engine in git is merge conflicts in scene/prefab files. Turian uses JSON for scenes which is mergeable in principle, but needs explicit tooling to make it reliable. AAA studios need this solved at the infrastructure level.
Goal
Make Turian projects git-friendly by default: a smart merge driver for scene JSON, a CLI diff tool for assets, and built-in LFS guidance for binary assets.
Tasks
Git merge driver
-
turian-cli mergedriver <base> <ours> <theirs> <output>— semantic merge of scene JSON (merge GameObjects by GUID, detect real conflicts vs. parallel additions) -
.gitattributestemplate injected byturian-cli create-project: routes*.scene.jsonthrough the merge driver - Conflict markers with GUID-annotated hunks (human-readable "Object 'Player' moved vs. renamed")
Diff tool
-
turian-cli diff <scene-a> <scene-b>— human-readable semantic diff (added/removed/changed objects + components) -
git difftoolintegration (register asturian-mergetool)
Binary assets
-
turian-cli lfs-check <project>— audits which tracked files should be in Git LFS, reports oversized blobs -
.gitattributestemplate pre-populates LFS patterns for meshes, textures, audio, compiled shaders
Studio UI
- "Git status" badge on assets (modified/conflict/untracked) using
git status --porcelain - Conflict resolver panel for scene files: side-by-side object list with accept/reject per conflict
Acceptance Criteria
- Two branches that each add a different GameObject to the same scene merge cleanly without a conflict.
turian-cli diffproduces human-readable output.- New projects get a
.gitattributeswith LFS patterns and the merge driver registered.
Related
- (JSON scene format, prerequisite), #32 (closed) (prefab merge follows the same driver), #15 (CLI commands).
Edited by Bruno Massa