Skip to content

Commit

Permalink
diff: document the format of the -O (diff.orderFile) file
Browse files Browse the repository at this point in the history
Signed-off-by: Richard Hansen <hansenr@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
rhansen authored and gitster committed Jan 16, 2017
1 parent 1a5fccc commit 874444b
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
5 changes: 2 additions & 3 deletions Documentation/diff-config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,10 @@ diff.noprefix::
If set, 'git diff' does not show any source or destination prefix.

diff.orderFile::
File indicating how to order files within a diff, using
one shell glob pattern per line.
File indicating how to order files within a diff.
See the '-O' option to linkgit:git-diff[1] for details.
If `diff.orderFile` is a relative pathname, it is treated as
relative to the top of the working tree.
Can be overridden by the '-O' option to linkgit:git-diff[1].

diff.renameLimit::
The number of files to consider when performing the copy/rename
Expand Down
34 changes: 32 additions & 2 deletions Documentation/diff-options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -466,11 +466,41 @@ information.
endif::git-format-patch[]

-O<orderfile>::
Output the patch in the order specified in the
<orderfile>, which has one shell glob pattern per line.
Control the order in which files appear in the output.
This overrides the `diff.orderFile` configuration variable
(see linkgit:git-config[1]). To cancel `diff.orderFile`,
use `-O/dev/null`.
+
The output order is determined by the order of glob patterns in
<orderfile>.
All files with pathnames that match the first pattern are output
first, all files with pathnames that match the second pattern (but not
the first) are output next, and so on.
All files with pathnames that do not match any pattern are output
last, as if there was an implicit match-all pattern at the end of the
file.
If multiple pathnames have the same rank (they match the same pattern
but no earlier patterns), their output order relative to each other is
the normal order.
+
<orderfile> is parsed as follows:
+
--
- Blank lines are ignored, so they can be used as separators for
readability.

- Lines starting with a hash ("`#`") are ignored, so they can be used
for comments. Add a backslash ("`\`") to the beginning of the
pattern if it starts with a hash.

- Each other line contains a single pattern.
--
+
Patterns have the same syntax and semantics as patterns used for
fnmantch(3) without the FNM_PATHNAME flag, except a pathname also
matches a pattern if removing any number of the final pathname
components matches the pattern. For example, the pattern "`foo*bar`"
matches "`fooasdfbar`" and "`foo/bar/baz/asdf`" but not "`foobarx`".

ifndef::git-format-patch[]
-R::
Expand Down

0 comments on commit 874444b

Please sign in to comment.