Set up Git LFS for binary art/audio/model assets

- git lfs install run repo-wide; LFS objects push to Forgejo (git.rdx4.com)
- .gitattributes routes images/audio/video/models/fonts/native-libs + binary
  .asset exceptions (LightingData, cubemap) through LFS filter
- Unity YAML text assets (.unity/.prefab/.mat/.asset/.anim/.controller) stay
  normal mergeable text, NOT LFS
- Verified: .png->lfs, .prefab->text, clean filter produces LFS pointer

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
megaproxy 2026-07-12 18:00:50 +01:00
parent fe884e97f7
commit a5502b1d17

125
.gitattributes vendored
View file

@ -1,29 +1,108 @@
# ============================================================================
# JANKENBOTS .gitattributes — Unity + Git LFS
# LFS objects are stored on the Forgejo remote (git.rdx4.com). git-lfs must be
# installed locally (`git lfs install`) — it is, repo-wide, as of 2026-07-12.
# ============================================================================
# Normalize line endings; Unity is happiest with LF for its YAML text assets.
* text=auto eol=lf
*.cs text diff=csharp eol=lf
# Unity YAML text assets — mergeable with UnityYAMLMerge
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
# ---- Unity YAML *text* assets — mergeable with UnityYAMLMerge, NOT LFS -------
# These are human-readable YAML (Asset Serialization = Force Text). Keep them as
# normal git text so diffs/merges work. Do NOT add them to LFS.
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.physicMaterial merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
# Common binary asset types (mark binary so git doesn't mangle them)
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.psd binary
*.fbx binary
*.obj binary
*.wav binary
*.mp3 binary
*.ogg binary
*.dll binary
*.a binary
*.so binary
# ============================================================================
# Git LFS — large binaries (art / audio / video / models / fonts / native libs)
# filter=lfs diff=lfs merge=lfs -text
# ============================================================================
# NOTE: no Git LFS yet. Add it (and move large binaries to LFS) once real art/audio lands.
# ---- Images / textures ------------------------------------------------------
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text
*.iff filter=lfs diff=lfs merge=lfs -text
*.pict filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
# ---- Audio ------------------------------------------------------------------
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
*.flac filter=lfs diff=lfs merge=lfs -text
*.mod filter=lfs diff=lfs merge=lfs -text
*.it filter=lfs diff=lfs merge=lfs -text
*.s3m filter=lfs diff=lfs merge=lfs -text
*.xm filter=lfs diff=lfs merge=lfs -text
# ---- Video ------------------------------------------------------------------
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.avi filter=lfs diff=lfs merge=lfs -text
*.webm filter=lfs diff=lfs merge=lfs -text
*.mpg filter=lfs diff=lfs merge=lfs -text
*.mpeg filter=lfs diff=lfs merge=lfs -text
*.flv filter=lfs diff=lfs merge=lfs -text
*.ogv filter=lfs diff=lfs merge=lfs -text
*.wmv filter=lfs diff=lfs merge=lfs -text
# ---- 3D models --------------------------------------------------------------
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.dae filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.max filter=lfs diff=lfs merge=lfs -text
*.c4d filter=lfs diff=lfs merge=lfs -text
*.mb filter=lfs diff=lfs merge=lfs -text
*.ma filter=lfs diff=lfs merge=lfs -text
*.lwo filter=lfs diff=lfs merge=lfs -text
*.lws filter=lfs diff=lfs merge=lfs -text
*.abc filter=lfs diff=lfs merge=lfs -text
*.ply filter=lfs diff=lfs merge=lfs -text
*.stl filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
# ---- Fonts ------------------------------------------------------------------
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
# ---- Native libraries / archives / binary bundles ---------------------------
*.dll filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.dylib filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.bundle filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.7z filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
*.unity3d filter=lfs diff=lfs merge=lfs -text
*.assetbundle filter=lfs diff=lfs merge=lfs -text
# ---- Binary .asset exceptions (override the text rule above) ----------------
# Baked lighting / cubemaps are binary despite the .asset extension.
*.cubemap filter=lfs diff=lfs merge=lfs -text
LightingData.asset filter=lfs diff=lfs merge=lfs -text