đšī¸ Managing File Attributes in Git Repository¶
đ Problem¶
During the development of a large-scale project involving multiple developers across various platforms, we encountered a recurring issue. Developers were reporting an error when attempting to commit their code.
Error
git commit get fatal error "fatal: CRLF would be replaced by LF in..."
đ Solution¶
The immediate solution was to instruct each developer to add the following configuration to their git config:
'git config --global core.autocrlf false'.
However, we sought a more proactive approach to prevent such an error from arising in the first place.
Our research led us to the use of .gitattributes
, which we decided to incorporate into our template.
The .gitattributes
file is a configuration file that allows you to specify attributes and behaviors for certain files in your repository. Define the line-ending style, binary or text attributes, and more.
Part of the configuration we implemented is as follows:
# Normalize line endings to LF on check-in and prevent conversion to CRLF when checked out.
# This is necessary to prevent newline related issues,
# such as those that might occur after running the build script.
.* text eol=lf
*.css text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.scss text eol=lf
*.md text eol=lf
*.rs text eol=lf
*.sh text eol=lf
*.toml text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.py text eol=lf
This configuration ensures that for the specified file types:
- đ Line endings are normalized to LF upon check-in.
- đĢ Conversion to CRLF is prevented when they are checked out.
This helps to prevent newline related issues, such as those that might occur after running the build script.
Reference: