Skip to content

Commit 946cd40

Browse files
Update .gitattributes with comprehensive best practices for .NET projects (#311)
* Initial plan * Update .gitattributes with comprehensive best practices for .NET projects Co-authored-by: TheAngryByrd <[email protected]> * Fix SVG file handling - use text with LF instead of binary LFS Co-authored-by: TheAngryByrd <[email protected]> * Address feedback: change project files to LF, remove build artifacts from LFS, update Content gitattributes Co-authored-by: TheAngryByrd <[email protected]> * Add Git LFS setup instructions to README files in Content/Library and Content/Console Co-authored-by: TheAngryByrd <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: TheAngryByrd <[email protected]>
1 parent 493a981 commit 946cd40

File tree

5 files changed

+309
-51
lines changed

5 files changed

+309
-51
lines changed

.gitattributes

Lines changed: 95 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,105 @@
1-
# Auto detect text files
1+
# Normalize line endings for all text files
22
* text=auto
33

4-
# Custom for Visual Studio
5-
*.cs diff=csharp text=auto eol=lf
6-
*.vb diff=csharp text=auto eol=lf
7-
*.fs diff=csharp text=auto eol=lf
8-
*.fsi diff=csharp text=auto eol=lf
9-
*.fsx diff=csharp text=auto eol=lf
10-
*.sln text eol=crlf merge=union
11-
*.csproj merge=union
12-
*.vbproj merge=union
13-
*.fsproj merge=union
14-
*.dbproj merge=union
4+
###############################
5+
# .NET Language Files
6+
###############################
7+
# Force LF for source code files to ensure consistency across platforms
8+
*.cs diff=csharp text eol=lf
9+
*.vb diff=csharp text eol=lf
10+
*.fs diff=csharp text eol=lf
11+
*.fsi diff=csharp text eol=lf
12+
*.fsx diff=csharp text eol=lf
13+
14+
###############################
15+
# .NET Project Files
16+
###############################
17+
# Force LF for cross-platform compatibility
18+
*.sln text eol=lf merge=union
19+
*.csproj text eol=lf merge=union
20+
*.vbproj text eol=lf merge=union
21+
*.fsproj text eol=lf merge=union
22+
*.dbproj text eol=lf merge=union
23+
*.props text eol=lf
24+
*.targets text eol=lf
25+
26+
###############################
27+
# Windows Scripts
28+
###############################
29+
# Force CRLF for Windows batch files and scripts
30+
*.cmd text eol=crlf
31+
*.bat text eol=crlf
32+
33+
###############################
34+
# Unix/Linux Scripts
35+
###############################
36+
# Force LF for shell scripts
1537
*.sh text eol=lf
1638

17-
# Standard to msysgit
18-
*.doc diff=astextplain
39+
###############################
40+
# Configuration Files
41+
###############################
42+
# Configuration and data files should use LF
43+
*.json text eol=lf
44+
*.yml text eol=lf
45+
*.yaml text eol=lf
46+
*.xml text eol=lf
47+
*.config text eol=lf
48+
*.md text eol=lf
49+
*.html text eol=lf
50+
*.css text eol=lf
51+
*.js text eol=lf
52+
*.ts text eol=lf
53+
54+
###############################
55+
# Binary Files - Git LFS
56+
###############################
57+
# Images
58+
*.png filter=lfs diff=lfs merge=lfs -text
59+
*.jpg filter=lfs diff=lfs merge=lfs -text
60+
*.jpeg filter=lfs diff=lfs merge=lfs -text
61+
*.gif filter=lfs diff=lfs merge=lfs -text
62+
*.bmp filter=lfs diff=lfs merge=lfs -text
63+
*.ico filter=lfs diff=lfs merge=lfs -text
64+
*.svg text eol=lf
65+
66+
# Documents
67+
*.pdf filter=lfs diff=lfs merge=lfs -text
68+
*.doc filter=lfs diff=lfs merge=lfs -text
69+
*.docx filter=lfs diff=lfs merge=lfs -text
70+
*.xls filter=lfs diff=lfs merge=lfs -text
71+
*.xlsx filter=lfs diff=lfs merge=lfs -text
72+
*.ppt filter=lfs diff=lfs merge=lfs -text
73+
*.pptx filter=lfs diff=lfs merge=lfs -text
74+
75+
# Archives
76+
*.zip filter=lfs diff=lfs merge=lfs -text
77+
*.tar filter=lfs diff=lfs merge=lfs -text
78+
*.gz filter=lfs diff=lfs merge=lfs -text
79+
*.rar filter=lfs diff=lfs merge=lfs -text
80+
*.7z filter=lfs diff=lfs merge=lfs -text
81+
82+
# Native Libraries (excluding .NET build artifacts)
83+
*.so filter=lfs diff=lfs merge=lfs -text
84+
*.dylib filter=lfs diff=lfs merge=lfs -text
85+
*.lib filter=lfs diff=lfs merge=lfs -text
86+
*.a filter=lfs diff=lfs merge=lfs -text
87+
88+
# Media Files
89+
*.mp4 filter=lfs diff=lfs merge=lfs -text
90+
*.avi filter=lfs diff=lfs merge=lfs -text
91+
*.mov filter=lfs diff=lfs merge=lfs -text
92+
*.mp3 filter=lfs diff=lfs merge=lfs -text
93+
*.wav filter=lfs diff=lfs merge=lfs -text
94+
95+
###############################
96+
# Legacy Binary Handling
97+
###############################
98+
# Fallback for document types that might not use LFS
1999
*.DOC diff=astextplain
20-
*.docx diff=astextplain
21100
*.DOCX diff=astextplain
22101
*.dot diff=astextplain
23102
*.DOT diff=astextplain
24-
*.pdf diff=astextplain
25103
*.PDF diff=astextplain
26-
*.rtf diff=astextplain
27104
*.RTF diff=astextplain
105+
*.rtf diff=astextplain

Content/Console/.gitattributes

Lines changed: 95 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,105 @@
1-
# Auto detect text files
1+
# Normalize line endings for all text files
22
* text=auto
33

4-
# Custom for Visual Studio
5-
*.cs diff=csharp text=auto eol=lf
6-
*.vb diff=csharp text=auto eol=lf
7-
*.fs diff=csharp text=auto eol=lf
8-
*.fsi diff=csharp text=auto eol=lf
9-
*.fsx diff=csharp text=auto eol=lf
10-
*.sln text eol=crlf merge=union
11-
*.csproj merge=union
12-
*.vbproj merge=union
13-
*.fsproj merge=union
14-
*.dbproj merge=union
4+
###############################
5+
# .NET Language Files
6+
###############################
7+
# Force LF for source code files to ensure consistency across platforms
8+
*.cs diff=csharp text eol=lf
9+
*.vb diff=csharp text eol=lf
10+
*.fs diff=csharp text eol=lf
11+
*.fsi diff=csharp text eol=lf
12+
*.fsx diff=csharp text eol=lf
13+
14+
###############################
15+
# .NET Project Files
16+
###############################
17+
# Force LF for cross-platform compatibility
18+
*.sln text eol=lf merge=union
19+
*.csproj text eol=lf merge=union
20+
*.vbproj text eol=lf merge=union
21+
*.fsproj text eol=lf merge=union
22+
*.dbproj text eol=lf merge=union
23+
*.props text eol=lf
24+
*.targets text eol=lf
25+
26+
###############################
27+
# Windows Scripts
28+
###############################
29+
# Force CRLF for Windows batch files and scripts
30+
*.cmd text eol=crlf
31+
*.bat text eol=crlf
32+
33+
###############################
34+
# Unix/Linux Scripts
35+
###############################
36+
# Force LF for shell scripts
1537
*.sh text eol=lf
1638

17-
# Standard to msysgit
18-
*.doc diff=astextplain
39+
###############################
40+
# Configuration Files
41+
###############################
42+
# Configuration and data files should use LF
43+
*.json text eol=lf
44+
*.yml text eol=lf
45+
*.yaml text eol=lf
46+
*.xml text eol=lf
47+
*.config text eol=lf
48+
*.md text eol=lf
49+
*.html text eol=lf
50+
*.css text eol=lf
51+
*.js text eol=lf
52+
*.ts text eol=lf
53+
54+
###############################
55+
# Binary Files - Git LFS
56+
###############################
57+
# Images
58+
*.png filter=lfs diff=lfs merge=lfs -text
59+
*.jpg filter=lfs diff=lfs merge=lfs -text
60+
*.jpeg filter=lfs diff=lfs merge=lfs -text
61+
*.gif filter=lfs diff=lfs merge=lfs -text
62+
*.bmp filter=lfs diff=lfs merge=lfs -text
63+
*.ico filter=lfs diff=lfs merge=lfs -text
64+
*.svg text eol=lf
65+
66+
# Documents
67+
*.pdf filter=lfs diff=lfs merge=lfs -text
68+
*.doc filter=lfs diff=lfs merge=lfs -text
69+
*.docx filter=lfs diff=lfs merge=lfs -text
70+
*.xls filter=lfs diff=lfs merge=lfs -text
71+
*.xlsx filter=lfs diff=lfs merge=lfs -text
72+
*.ppt filter=lfs diff=lfs merge=lfs -text
73+
*.pptx filter=lfs diff=lfs merge=lfs -text
74+
75+
# Archives
76+
*.zip filter=lfs diff=lfs merge=lfs -text
77+
*.tar filter=lfs diff=lfs merge=lfs -text
78+
*.gz filter=lfs diff=lfs merge=lfs -text
79+
*.rar filter=lfs diff=lfs merge=lfs -text
80+
*.7z filter=lfs diff=lfs merge=lfs -text
81+
82+
# Native Libraries (excluding .NET build artifacts)
83+
*.so filter=lfs diff=lfs merge=lfs -text
84+
*.dylib filter=lfs diff=lfs merge=lfs -text
85+
*.lib filter=lfs diff=lfs merge=lfs -text
86+
*.a filter=lfs diff=lfs merge=lfs -text
87+
88+
# Media Files
89+
*.mp4 filter=lfs diff=lfs merge=lfs -text
90+
*.avi filter=lfs diff=lfs merge=lfs -text
91+
*.mov filter=lfs diff=lfs merge=lfs -text
92+
*.mp3 filter=lfs diff=lfs merge=lfs -text
93+
*.wav filter=lfs diff=lfs merge=lfs -text
94+
95+
###############################
96+
# Legacy Binary Handling
97+
###############################
98+
# Fallback for document types that might not use LFS
1999
*.DOC diff=astextplain
20-
*.docx diff=astextplain
21100
*.DOCX diff=astextplain
22101
*.dot diff=astextplain
23102
*.DOT diff=astextplain
24-
*.pdf diff=astextplain
25103
*.PDF diff=astextplain
26-
*.rtf diff=astextplain
27104
*.RTF diff=astextplain
105+
*.rtf diff=astextplain

Content/Console/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,23 @@ Make sure the following **requirements** are installed on your system:
2727

2828
- [dotnet SDK](https://www.microsoft.com/net/download/core) 3.0 or higher
2929
- [Mono](http://www.mono-project.com/) if you're on Linux or macOS.
30+
- [Git LFS](https://git-lfs.com/) for handling binary assets
3031

3132
or
3233

3334
- [VSCode Dev Container](https://code.visualstudio.com/docs/remote/containers)
3435

36+
#### Git LFS Setup
37+
38+
This project uses Git LFS to handle binary assets efficiently. After cloning the repository, initialize Git LFS:
39+
40+
```sh
41+
git lfs install
42+
git lfs pull
43+
```
44+
45+
The `.gitattributes` file is already configured to track binary files (images, documents, archives, etc.) with LFS automatically.
46+
3547

3648
---
3749

Content/Library/.gitattributes

Lines changed: 95 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,105 @@
1-
# Auto detect text files
1+
# Normalize line endings for all text files
22
* text=auto
33

4-
# Custom for Visual Studio
5-
*.cs diff=csharp text=auto eol=lf
6-
*.vb diff=csharp text=auto eol=lf
7-
*.fs diff=csharp text=auto eol=lf
8-
*.fsi diff=csharp text=auto eol=lf
9-
*.fsx diff=csharp text=auto eol=lf
10-
*.sln text eol=crlf merge=union
11-
*.csproj merge=union
12-
*.vbproj merge=union
13-
*.fsproj merge=union
14-
*.dbproj merge=union
4+
###############################
5+
# .NET Language Files
6+
###############################
7+
# Force LF for source code files to ensure consistency across platforms
8+
*.cs diff=csharp text eol=lf
9+
*.vb diff=csharp text eol=lf
10+
*.fs diff=csharp text eol=lf
11+
*.fsi diff=csharp text eol=lf
12+
*.fsx diff=csharp text eol=lf
13+
14+
###############################
15+
# .NET Project Files
16+
###############################
17+
# Force LF for cross-platform compatibility
18+
*.sln text eol=lf merge=union
19+
*.csproj text eol=lf merge=union
20+
*.vbproj text eol=lf merge=union
21+
*.fsproj text eol=lf merge=union
22+
*.dbproj text eol=lf merge=union
23+
*.props text eol=lf
24+
*.targets text eol=lf
25+
26+
###############################
27+
# Windows Scripts
28+
###############################
29+
# Force CRLF for Windows batch files and scripts
30+
*.cmd text eol=crlf
31+
*.bat text eol=crlf
32+
33+
###############################
34+
# Unix/Linux Scripts
35+
###############################
36+
# Force LF for shell scripts
1537
*.sh text eol=lf
1638

17-
# Standard to msysgit
18-
*.doc diff=astextplain
39+
###############################
40+
# Configuration Files
41+
###############################
42+
# Configuration and data files should use LF
43+
*.json text eol=lf
44+
*.yml text eol=lf
45+
*.yaml text eol=lf
46+
*.xml text eol=lf
47+
*.config text eol=lf
48+
*.md text eol=lf
49+
*.html text eol=lf
50+
*.css text eol=lf
51+
*.js text eol=lf
52+
*.ts text eol=lf
53+
54+
###############################
55+
# Binary Files - Git LFS
56+
###############################
57+
# Images
58+
*.png filter=lfs diff=lfs merge=lfs -text
59+
*.jpg filter=lfs diff=lfs merge=lfs -text
60+
*.jpeg filter=lfs diff=lfs merge=lfs -text
61+
*.gif filter=lfs diff=lfs merge=lfs -text
62+
*.bmp filter=lfs diff=lfs merge=lfs -text
63+
*.ico filter=lfs diff=lfs merge=lfs -text
64+
*.svg text eol=lf
65+
66+
# Documents
67+
*.pdf filter=lfs diff=lfs merge=lfs -text
68+
*.doc filter=lfs diff=lfs merge=lfs -text
69+
*.docx filter=lfs diff=lfs merge=lfs -text
70+
*.xls filter=lfs diff=lfs merge=lfs -text
71+
*.xlsx filter=lfs diff=lfs merge=lfs -text
72+
*.ppt filter=lfs diff=lfs merge=lfs -text
73+
*.pptx filter=lfs diff=lfs merge=lfs -text
74+
75+
# Archives
76+
*.zip filter=lfs diff=lfs merge=lfs -text
77+
*.tar filter=lfs diff=lfs merge=lfs -text
78+
*.gz filter=lfs diff=lfs merge=lfs -text
79+
*.rar filter=lfs diff=lfs merge=lfs -text
80+
*.7z filter=lfs diff=lfs merge=lfs -text
81+
82+
# Native Libraries (excluding .NET build artifacts)
83+
*.so filter=lfs diff=lfs merge=lfs -text
84+
*.dylib filter=lfs diff=lfs merge=lfs -text
85+
*.lib filter=lfs diff=lfs merge=lfs -text
86+
*.a filter=lfs diff=lfs merge=lfs -text
87+
88+
# Media Files
89+
*.mp4 filter=lfs diff=lfs merge=lfs -text
90+
*.avi filter=lfs diff=lfs merge=lfs -text
91+
*.mov filter=lfs diff=lfs merge=lfs -text
92+
*.mp3 filter=lfs diff=lfs merge=lfs -text
93+
*.wav filter=lfs diff=lfs merge=lfs -text
94+
95+
###############################
96+
# Legacy Binary Handling
97+
###############################
98+
# Fallback for document types that might not use LFS
1999
*.DOC diff=astextplain
20-
*.docx diff=astextplain
21100
*.DOCX diff=astextplain
22101
*.dot diff=astextplain
23102
*.DOT diff=astextplain
24-
*.pdf diff=astextplain
25103
*.PDF diff=astextplain
26-
*.rtf diff=astextplain
27104
*.RTF diff=astextplain
105+
*.rtf diff=astextplain

0 commit comments

Comments
 (0)