path: root/Documentation/diff-options.txt
diff options
authorRichard Hansen <>2017-01-15 22:16:31 (GMT)
committerJunio C Hamano <>2017-01-16 00:42:16 (GMT)
commit874444b70451879d5b9b7e288e5c4e711c4a87ac (patch)
treedd4064f31a2b5aed06dc4e8fd1d80e3806dd1e08 /Documentation/diff-options.txt
parent1a5fccc0c26b4a8abafd85a73558022e65f6f8cf (diff)
diff: document the format of the -O (diff.orderFile) file
Signed-off-by: Richard Hansen <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/diff-options.txt')
1 files changed, 32 insertions, 2 deletions
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index e6215c3..d4fb707 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -466,11 +466,41 @@ information.
- 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
+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
+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`".