From 01db72080cad5e5f73c4a099f6c2d7edbb04185d Mon Sep 17 00:00:00 2001 From: gilbertchen Date: Sat, 5 Aug 2017 11:52:17 -0400 Subject: [PATCH] Update GUIDE.md --- GUIDE.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/GUIDE.md b/GUIDE.md index e0d675c..18a1d34 100644 --- a/GUIDE.md +++ b/GUIDE.md @@ -458,9 +458,24 @@ destination storage and is required. An include pattern starts with +, and an exclude pattern starts with -. Patterns may contain wildcard characters * which matches a path string of any length, and ? matches a single character. Note that both * and ? will match any character including the path separator /. +The path separator is always /, even on Windows. + When matching a path against a list of patterns, the path is compared with the part after + or -, one pattern at a time. Therefore, the order of the patterns is significant. If a match with an include pattern is found, the path is said to be included without further comparisons. If a match with an exclude pattern is found, the path is said to be excluded without further comparison. If a match is not found, the path will be excluded if all patterns are include patterns, but included otherwise. -Patterns ending with a / apply to directories only, and patterns not ending with a / apply to files only. When a directory is excluded, all files and subdirectires under it will also be excluded. Note that the path separator is always /, even on Windows. +Patterns ending with a / apply to directories only, and patterns not ending with a / apply to files only. Patterns ending with * and ?, however, apply to both directories and files. When a directory is excluded, all files and subdirectories under it will also be excluded. Therefore, to include a subdirectory, all parent directories must be explicitly included. For instance, the following pattern list doesn't do what is intended, since the `foo` directory will be excluded so the `foo/bar` will never be visited: + +``` ++foo/bar/* +-* +``` + +The correct way is to include `foo` as well: + +``` ++foo/bar/* ++foo/ +-* +``` The following pattern list includes only files under the directory foo/ but not files under the subdirectory foo/bar: