Repository navigation
Expand file tree
/
Copy path.gitattributes
More file actions
164 lines (136 loc) · 4.73 KB
/
Copy path.gitattributes
File metadata and controls
164 lines (136 loc) · 4.73 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# =============================================================================
# Git Attributes Configuration
# Normalizes line endings, marks export-ignore files, and sets diff strategies
# =============================================================================
# ===================================================================
# Auto-detect text vs binary files (safer than trusting extensions)
# ===================================================================
* text=auto eol=lf
# ===================================================================
# SOURCE CODE - Always LF (Unix line endings)
# ===================================================================
*.cpp text eol=lf diff=cpp
*.cc text eol=lf diff=cpp
*.c text eol=lf diff=cpp
*.hpp text eol=lf diff=cpp
*.hh text eol=lf diff=cpp
*.h text eol=lf diff=cpp
*.inl text eol=lf diff=cpp
*.ipp text eol=lf diff=cpp
*.ixx text eol=lf diff=cpp
# ===================================================================
# BUILD FILES - Always LF
# ===================================================================
CMakeLists.txt text eol=lf
*.cmake text eol=lf
# ===================================================================
# SCRIPTS & CONFIG - Always LF
# Execute bit on committed shell scripts must be set manually via:
# git add --chmod=+x tools/*.sh scripts/*.sh
# ===================================================================
*.sh text eol=lf
*.py text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf
*.md text eol=lf diff=markdown
# Pre-commit & Git config
.pre-commit-config.yaml text eol=lf
.clang-format text eol=lf
.clang-tidy text eol=lf
.editorconfig text eol=lf
# SVG is XML/text - normalize like source code
*.svg text eol=lf
# ===================================================================
# WINDOWS SCRIPTS - Always CRLF (Required by Windows tooling)
# ===================================================================
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
# ===================================================================
# VISUAL STUDIO / MSVC - Always CRLF (Windows project files)
# ===================================================================
*.vcxproj text eol=crlf
*.vcxproj.filters text eol=crlf
*.sln text eol=crlf
# ===================================================================
# BINARY FILES - Never normalize line endings
# ===================================================================
# Assets folder
assets/** binary
# Images
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.bmp binary
# Archives
*.zip binary
*.7z binary
*.rar binary
*.tar binary
*.gz binary
# Compiled & object files
*.dll binary
*.exe binary
*.lib binary
*.obj binary
*.a binary
*.so binary
*.dylib binary
*.o binary
# Debug symbols
*.pdb binary
*.dSYM binary
# Fonts
*.ttf binary
*.otf binary
*.woff binary
*.woff2 binary
# ===================================================================
# EXPORT-IGNORE: Exclude from `git archive` / release tarballs
# Only development-only paths that consumers never need.
# ===================================================================
# CI/CD workflows
.github/ export-ignore
# Git configuration & hooks
.gitignore export-ignore
.gitattributes export-ignore
.pre-commit-config.yaml export-ignore
.gitleaksignore export-ignore
# Code formatting & linting configs (users can have their own)
.clang-format export-ignore
.clang-tidy export-ignore
# Development tools & scripts
tools/ export-ignore
scripts/ export-ignore
# Build & cache directories (regenerated on configure/build)
build/ export-ignore
_deps/ export-ignore
.cache/ export-ignore
# vcpkg (large; users bootstrap from vcpkg.json)
vcpkg/ export-ignore
vcpkg_installed/ export-ignore
# IDE & editor files
.vscode/ export-ignore
.idea/ export-ignore
# Visual Studio project files (generated by CMake)
*.sln export-ignore
*.vcxproj export-ignore
*.vcxproj.filters export-ignore
# CMake user/machine-specific presets
CMakeUserPresets.json export-ignore
# Test & example build outputs
examples/*/build/ export-ignore
# Documentation generation artifacts (source is sufficient)
docs/doxygen/ export-ignore
docs/html/ export-ignore
# OS metadata (should be in .gitignore, listed here as safety net)
.DS_Store export-ignore
Thumbs.db export-ignore
# ===================================================================
# MERGE STRATEGY: Prefer ours for generated / machine-specific files
# Prevents spurious conflicts when CMake or Git regenerates these.
# ===================================================================
CMakePresets.json merge=ours