Signed-off-by: Richard Hansen <hansenr@xxxxxxxxxx> --- Documentation/diff-config.txt | 5 ++-- Documentation/diff-options.txt | 54 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt index 875212045..9e4111320 100644 --- a/Documentation/diff-config.txt +++ b/Documentation/diff-config.txt @@ -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 work 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 diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index e6215c372..e57e9f810 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -466,11 +466,61 @@ 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, 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) with the FNM_PATHNAME flag, except multiple consecutive +unescaped asterisks (e.g., "`**`") have a special meaning: ++ +-- + - A pattern beginning with "`**/`" means match in all directories. + For example, "`**/foo`" matches filename "`foo`" anywhere, and + "`**/foo/bar`" matches filename "`bar`" anywhere that is directly + under directory "`foo`". + + - A pattern ending with "`/**`" matches everything inside a + directory, with infinite depth. For example, "`abc/**`" matches + "`abc/def/ghi`" but not "`foo/abc/def`". + + - A slash followed by two consecutive asterisks then a slash + ("`/**/`") matches zero or more directory components. For example, + "`a/**/b`" matches "`a/b`", "`a/x/b`", "`a/x/y/b`" and so on. + + - A pattern with more than one consecutive unescaped asterisk is + invalid. +-- ++ +In addition, a pathname matches a pattern if the pathname with any +number of its final pathname components removed matches the pattern. +For example, the pattern "`foo/*bar`" matches "`foo/asdfbar`" and +"`foo/bar/baz`" but not "`foo/barx`". ifndef::git-format-patch[] -R:: -- 2.11.0.390.gc69c2f50cf-goog