mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
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:
parent
5c054a985a
commit
ae7aa49914
|
@ -72,8 +72,8 @@ EFFECTS
|
|||
-------
|
||||
|
||||
Certain operations by git can be influenced by assigning
|
||||
particular attributes to a path. Currently, three operations
|
||||
are attributes-aware.
|
||||
particular attributes to a path. Currently, the following
|
||||
operations are attributes-aware.
|
||||
|
||||
Checking-out and checking-in
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -199,7 +199,9 @@ Generating diff text
|
|||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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::
|
||||
|
||||
|
@ -224,7 +226,8 @@ String::
|
|||
Diff is shown using the specified custom diff driver.
|
||||
The driver program is given its input using the same
|
||||
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
|
||||
|
@ -249,6 +252,50 @@ parameters, just like `GIT_EXTERNAL_DIFF` program is called.
|
|||
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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
Loading…
Reference in a new issue