gitattributes: Document the unified "auto" handling
Update the documentation about text=auto: text=auto now follows the core.autocrlf handling when files are not normalized in the repository. For a cross platform project recommend the usage of attributes for line-ending conversions. Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5cb0d5ad05
commit
e28eae3184
@ -182,6 +182,30 @@ While Git normally leaves file contents alone, it can be configured to
|
|||||||
normalize line endings to LF in the repository and, optionally, to
|
normalize line endings to LF in the repository and, optionally, to
|
||||||
convert them to CRLF when files are checked out.
|
convert them to CRLF when files are checked out.
|
||||||
|
|
||||||
|
If you simply want to have CRLF line endings in your working directory
|
||||||
|
regardless of the repository you are working with, you can set the
|
||||||
|
config variable "core.autocrlf" without using any attributes.
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
[core]
|
||||||
|
autocrlf = true
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
This does not force normalization of text files, but does ensure
|
||||||
|
that text files that you introduce to the repository have their line
|
||||||
|
endings normalized to LF when they are added, and that files that are
|
||||||
|
already normalized in the repository stay normalized.
|
||||||
|
|
||||||
|
If you want to ensure that text files that any contributor introduces to
|
||||||
|
the repository have their line endings normalized, you can set the
|
||||||
|
`text` attribute to "auto" for _all_ files.
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
* text=auto
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The attributes allow a fine-grained control, how the line endings
|
||||||
|
are converted.
|
||||||
Here is an example that will make Git normalize .txt, .vcproj and .sh
|
Here is an example that will make Git normalize .txt, .vcproj and .sh
|
||||||
files, ensure that .vcproj files have CRLF and .sh files have LF in
|
files, ensure that .vcproj files have CRLF and .sh files have LF in
|
||||||
the working directory, and prevent .jpg files from being normalized
|
the working directory, and prevent .jpg files from being normalized
|
||||||
@ -195,48 +219,14 @@ regardless of their content.
|
|||||||
*.jpg -text
|
*.jpg -text
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Other source code management systems normalize all text files in their
|
NOTE: When `text=auto` conversion is enabled in a cross-platform
|
||||||
repositories, and there are two ways to enable similar automatic
|
project using push and pull to a central repository the text files
|
||||||
normalization in Git.
|
containing CRLFs should be normalized.
|
||||||
|
|
||||||
If you simply want to have CRLF line endings in your working directory
|
From a clean working directory:
|
||||||
regardless of the repository you are working with, you can set the
|
|
||||||
config variable "core.autocrlf" without using any attributes.
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
[core]
|
|
||||||
autocrlf = true
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
This does not force normalization of all text files, but does ensure
|
|
||||||
that text files that you introduce to the repository have their line
|
|
||||||
endings normalized to LF when they are added, and that files that are
|
|
||||||
already normalized in the repository stay normalized.
|
|
||||||
|
|
||||||
If you want to interoperate with a source code management system that
|
|
||||||
enforces end-of-line normalization, or you simply want all text files
|
|
||||||
in your repository to be normalized, you should instead set the `text`
|
|
||||||
attribute to "auto" for _all_ files.
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
* text=auto
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
This ensures that all files that Git considers to be text will have
|
|
||||||
normalized (LF) line endings in the repository. The `core.eol`
|
|
||||||
configuration variable controls which line endings Git will use for
|
|
||||||
normalized files in your working directory; the default is to use the
|
|
||||||
native line ending for your platform, or CRLF if `core.autocrlf` is
|
|
||||||
set.
|
|
||||||
|
|
||||||
NOTE: When `text=auto` normalization is enabled in an existing
|
|
||||||
repository, any text files containing CRLFs should be normalized. If
|
|
||||||
they are not they will be normalized the next time someone tries to
|
|
||||||
change them, causing unfortunate misattribution. From a clean working
|
|
||||||
directory:
|
|
||||||
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
$ echo "* text=auto" >>.gitattributes
|
$ echo "* text=auto" >.gitattributes
|
||||||
$ rm .git/index # Remove the index to force Git to
|
$ rm .git/index # Remove the index to force Git to
|
||||||
$ git reset # re-scan the working directory
|
$ git reset # re-scan the working directory
|
||||||
$ git status # Show files that will be normalized
|
$ git status # Show files that will be normalized
|
||||||
|
Loading…
Reference in New Issue
Block a user