-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.gitattributes
More file actions
55 lines (53 loc) · 2.31 KB
/
Copy path.gitattributes
File metadata and controls
55 lines (53 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Line endings are LF, in the repository and in every working tree.
#
# `eol=lf` rather than bare `text=auto` on purpose: `text=auto` alone normalises
# to LF in the repository but leaves the checkout to each machine's
# `core.autocrlf`, which is how a tree ends up half CRLF without anyone choosing
# it. This states the answer once, in the repository, so a fresh clone is the
# same on Windows, Linux and the cloud build box.
#
# The one file type where LF can genuinely bite is a Windows batch file: cmd.exe
# has historically mishandled LF-only `.cmd` around labels and multi-line
# blocks. The two in this tree are already LF and work, so they are not carved
# out; if one ever misbehaves, `*.cmd text eol=crlf` here is the fix.
* text=auto eol=lf
# Binary assets — never normalised, never diffed as text. Getting this wrong is
# not cosmetic: EOL translation inside a JPEG2000 or a heightmap corrupts it.
*.j2c binary
*.tga binary
*.ogg binary
*.raw binary
# Wearables and settings are text-shaped and are content-addressed all the
# same: a vault asset's identity is the SHA-256 of its bytes, so normalising a
# CRLF out of one renames it. On 2026-08-20 exactly that had happened to the
# default skin — the repository's copy was the grid's copy with 63 carriage
# returns removed, a different asset by every measure that matters, and a
# region carrying it could not register against a grid that already held the
# original.
*.bodypart binary
*.clothing binary
*.settings binary
*.r32 binary
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.zip binary
*.gz binary
*.fbx binary
*.glb binary
*.pdb binary
*.exe binary
*.dll binary
# The bundled default-avatar assets are exempt from *everything* above, and the
# reason is not style. They are content-addressed: a region registers each one
# with the grid by SHA256, so their bytes are their identity. Rewriting a line
# ending changes the hash, and a region whose bundled assets no longer match what
# the grid registered cannot serve the default avatar — four of these have
# already drifted from the cloud once, which is how the hazard is known.
#
# They are wearable *text* (`LLWearable version 22` and a parameter list), which
# is exactly why they would otherwise be normalised. `-text` says: leave these
# bytes alone.
assets/region/default-avatar/** -text