Merge branch 'pb/prepare-commit-msg'
[gitweb.git] / Documentation / gitattributes.txt
index 19bd25f29900c99d78592fe290772856092e2dc5..35a29fd60c4aa70fbbd7c05ed40e4b545225c74d 100644 (file)
@@ -238,7 +238,7 @@ When git needs to show you a diff for the path with `diff`
 attribute set to `jcdiff`, it calls the command you specified
 with the above configuration, i.e. `j-c-diff`, with 7
 parameters, just like `GIT_EXTERNAL_DIFF` program is called.
-See gitlink:git[7] for details.
+See linkgit:git[7] for details.
 
 
 Defining a custom hunk-header
@@ -322,12 +322,43 @@ String::
        requested with "binary".
 
 
+Built-in merge drivers
+^^^^^^^^^^^^^^^^^^^^^^
+
+There are a few built-in low-level merge drivers defined that
+can be asked for via the `merge` attribute.
+
+text::
+
+       Usual 3-way file level merge for text files.  Conflicted
+       regions are marked with conflict markers `<<<<<<<`,
+       `=======` and `>>>>>>>`.  The version from your branch
+       appears before the `=======` marker, and the version
+       from the merged branch appears after the `=======`
+       marker.
+
+binary::
+
+       Keep the version from your branch in the work tree, but
+       leave the path in the conflicted state for the user to
+       sort out.
+
+union::
+
+       Run 3-way file level merge for text files, but take
+       lines from both versions, instead of leaving conflict
+       markers.  This tends to leave the added lines in the
+       resulting file in random order and the user should
+       verify the result. Do not use this if you do not
+       understand the implications.
+
+
 Defining a custom merge driver
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-The definition of a merge driver is done in `gitconfig` not
-`gitattributes` file, so strictly speaking this manual page is a
-wrong place to talk about it.  However...
+The definition of a merge driver is done in the `.git/config`
+file, not in the `gitattributes` file, so strictly speaking this
+manual page is a wrong place to talk about it.  However...
 
 To define a custom merge driver `filfre`, add a section to your
 `$GIT_DIR/config` file (or `$HOME/.gitconfig` file) like this:
@@ -361,6 +392,37 @@ When left unspecified, the driver itself is used for both
 internal merge and the final merge.
 
 
+Checking whitespace errors
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+`whitespace`
+^^^^^^^^^^^^
+
+The `core.whitespace` configuration variable allows you to define what
+`diff` and `apply` should consider whitespace errors for all paths in
+the project (See linkgit:git-config[1]).  This attribute gives you finer
+control per path.
+
+Set::
+
+       Notice all types of potential whitespace errors known to git.
+
+Unset::
+
+       Do not notice anything as error.
+
+Unspecified::
+
+       Use the value of `core.whitespace` configuration variable to
+       decide what to notice as error.
+
+String::
+
+       Specify a comma separate list of common whitespace problems to
+       notice in the same format as `core.whitespace` configuration
+       variable.
+
+
 EXAMPLE
 -------
 
@@ -419,9 +481,9 @@ Creating an archive
 If the attribute `export-subst` is set for a file then git will expand
 several placeholders when adding this file to an archive.  The
 expansion depends on the availability of a commit ID, i.e. if
-gitlink:git-archive[1] has been given a tree instead of a commit or a
+linkgit:git-archive[1] has been given a tree instead of a commit or a
 tag then no replacement will be done.  The placeholders are the same
-as those for the option `--pretty=format:` of gitlink:git-log[1],
+as those for the option `--pretty=format:` of linkgit:git-log[1],
 except that they need to be wrapped like this: `$Format:PLACEHOLDERS$`
 in the file.  E.g. the string `$Format:%H$` will be replaced by the
 commit hash.
@@ -429,4 +491,4 @@ commit hash.
 
 GIT
 ---
-Part of the gitlink:git[7] suite
+Part of the linkgit:git[7] suite