Document custom hunk header selection
Since the external interface seems to have stabilized for this new feature, let's document it properly. Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -72,8 +72,8 @@ EFFECTS
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
Certain operations by git can be influenced by assigning
|
Certain operations by git can be influenced by assigning
|
||||||
particular attributes to a path. Currently, three operations
|
particular attributes to a path. Currently, the following
|
||||||
are attributes-aware.
|
operations are attributes-aware.
|
||||||
|
|
||||||
Checking-out and checking-in
|
Checking-out and checking-in
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@ -199,7 +199,9 @@ Generating diff text
|
|||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The attribute `diff` affects if `git diff` generates textual
|
The attribute `diff` affects if `git diff` generates textual
|
||||||
patch for the path or just says `Binary files differ`.
|
patch for the path or just says `Binary files differ`. It also
|
||||||
|
can affect what line is shown on the hunk header `@@ -k,l +n,m @@`
|
||||||
|
line.
|
||||||
|
|
||||||
Set::
|
Set::
|
||||||
|
|
||||||
@ -224,7 +226,8 @@ String::
|
|||||||
Diff is shown using the specified custom diff driver.
|
Diff is shown using the specified custom diff driver.
|
||||||
The driver program is given its input using the same
|
The driver program is given its input using the same
|
||||||
calling convention as used for GIT_EXTERNAL_DIFF
|
calling convention as used for GIT_EXTERNAL_DIFF
|
||||||
program.
|
program. This name is also used for custom hunk header
|
||||||
|
selection.
|
||||||
|
|
||||||
|
|
||||||
Defining a custom diff driver
|
Defining a custom diff driver
|
||||||
@ -249,6 +252,50 @@ parameters, just like `GIT_EXTERNAL_DIFF` program is called.
|
|||||||
See gitlink:git[7] for details.
|
See gitlink:git[7] for details.
|
||||||
|
|
||||||
|
|
||||||
|
Defining a custom hunk-header
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Each group of changes (called "hunk") in the textual diff output
|
||||||
|
is prefixed with a line of the form:
|
||||||
|
|
||||||
|
@@ -k,l +n,m @@ TEXT
|
||||||
|
|
||||||
|
The text is called 'hunk header', and by default a line that
|
||||||
|
begins with an alphabet, an underscore or a dollar sign is used,
|
||||||
|
which matches what GNU `diff -p` output uses. This default
|
||||||
|
selection however is not suited for some contents, and you can
|
||||||
|
use customized pattern to make a selection.
|
||||||
|
|
||||||
|
First in .gitattributes, you would assign the `diff` attribute
|
||||||
|
for paths.
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
*.tex diff=tex
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Then, you would define "diff.tex.funcname" configuration to
|
||||||
|
specify a regular expression that matches a line that you would
|
||||||
|
want to appear as the hunk header, like this:
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
[diff "tex"]
|
||||||
|
funcname = "^\\(\\\\\\(sub\\)*section{.*\\)$"
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Note. A single level of backslashes are eaten by the
|
||||||
|
configuration file parser, so you would need to double the
|
||||||
|
backslashes; the pattern above picks a line that begins with a
|
||||||
|
backslash, and zero or more occurences of `sub` followed by
|
||||||
|
`section` followed by open brace, to the end of line.
|
||||||
|
|
||||||
|
There are a few built-in patterns to make this easier, and `tex`
|
||||||
|
is one of them, so you do not have to write the above in your
|
||||||
|
configuration file (you still need to enable this with the
|
||||||
|
attribute mechanism, via `.gitattributes`). Another built-in
|
||||||
|
pattern is defined for `java` that defines a pattern suitable
|
||||||
|
for program text in Java language.
|
||||||
|
|
||||||
|
|
||||||
Performing a three-way merge
|
Performing a three-way merge
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user