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:
		 Torsten Bögershausen
					Torsten Bögershausen
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						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 | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user