So this is the reroll that makes git diff HEAD submodule git diff HEAD submodule/ and git diff HEAD HEAD^ submodule git diff HEAD HEAD^ submodule/ behave the same way. The main patches are 04/09 and 09/09. The rest is just refactoring and cleaning up. While looking at this, I found a funny behavior of fill_directory. $ git init $ mkdir b $ >b/c $ >b/d $ git status b Untracked files: b/ $ git status b/ Untracked files: b/c b/d Notice how the trailing slash produces different untracked listing. This is because of common_prefix_len(). In the "b" case, common_prefix_len() returns empty prefix, so read_directory reads top directory, traverses through, reaches "b" and eventually calls treat_directory() on it, which results in "b/" in the output. In the "b/" case, common_prefix_len() found the prefix "b", so read_directory() starts at "b" instead of b's parent. treat_directory() is never called on "b" itself, which results in "b/c" and "b/d". I'm tempted to make it consistent, favoring "b/" output. But that involves extra lstat, or reordering the complex read_directory() code. This is probably very unusual case to pay attention to anyway. Nguyễn Thái Ngọc Duy (9): Convert some match_pathspec_depth() to ce_path_match() Convert some match_pathspec_depth() to dir_path_match() Rename match_pathspec_depth() to match_pathspec() dir.c: prepare match_pathspec_item for taking more flags match_pathspec: match pathspec "foo/" against directory "foo" Pass directory indicator to match_pathspec_item() clean: replace match_pathspec() with dir_path_match() clean: use cache_name_is_other() tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting() builtin/add.c | 3 +-- builtin/checkout.c | 3 +-- builtin/clean.c | 24 +++--------------------- builtin/commit.c | 2 +- builtin/grep.c | 6 ++---- builtin/ls-files.c | 9 ++++++--- builtin/ls-tree.c | 2 +- builtin/rm.c | 2 +- builtin/update-index.c | 3 ++- cache.h | 2 -- diff-lib.c | 5 +++-- dir.c | 40 ++++++++++++++++++++++++++-------------- dir.h | 24 +++++++++++++++++++++--- pathspec.c | 2 +- preload-index.c | 3 ++- read-cache.c | 8 +------- rerere.c | 4 ++-- resolve-undo.c | 2 +- revision.c | 3 ++- t/t4010-diff-pathspec.sh | 23 +++++++++++++++++++++++ t/t6131-pathspec-icase.sh | 6 +++--- tree-walk.c | 2 +- wt-status.c | 6 +++--- 23 files changed, 107 insertions(+), 77 deletions(-) -- 1.8.5.2.240.g8478abd -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html