]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff: document the format of the -O (diff.orderFile) file
authorRichard Hansen <hansenr@google.com>
Sun, 15 Jan 2017 22:16:31 +0000 (17:16 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 16 Jan 2017 00:42:16 +0000 (16:42 -0800)
Signed-off-by: Richard Hansen <hansenr@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/diff-config.txt
Documentation/diff-options.txt

index bf955852bab40d044eb3507ecfd6332f56e5f025..85aca8bbe865514b1920670ed281c1a6a8ab59f3 100644 (file)
@@ -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
index e6215c372c3c3c876125c8ac363a446fd840e112..d4fb70704482fd18bb981be35607b682c069b820 100644 (file)
@@ -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::