diff options
| author | Junio C Hamano <gitster@pobox.com> | 2017-01-18 15:12:11 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2017-01-18 15:12:11 -0800 |
| commit | 55d128ae06b7b82f867961b677984620612a201c (patch) | |
| tree | 5628d92c5a897c1738ae99b360d303a2ac62409e /tree-walk.c | |
| parent | ffac48d093d4b518a0cc0e8bf1b7cb53e0c3d7a2 (diff) | |
| parent | e6fac7f3d3e313a93fe9b1243917669267b33153 (diff) | |
| download | git-55d128ae06b7b82f867961b677984620612a201c.tar.gz | |
Merge branch 'bw/grep-recurse-submodules'
"git grep" has been taught to optionally recurse into submodules.
* bw/grep-recurse-submodules:
grep: search history of moved submodules
grep: enable recurse-submodules to work on <tree> objects
grep: optionally recurse into submodules
grep: add submodules as a grep source type
submodules: load gitmodules file from commit sha1
submodules: add helper to determine if a submodule is initialized
submodules: add helper to determine if a submodule is populated
real_path: canonicalize directory separators in root parts
real_path: have callers use real_pathdup and strbuf_realpath
real_path: create real_pathdup
real_path: convert real_path_internal to strbuf_realpath
real_path: resolve symlinks by hand
Diffstat (limited to 'tree-walk.c')
| -rw-r--r-- | tree-walk.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tree-walk.c b/tree-walk.c index 828f4356be..ff77605680 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -1004,6 +1004,19 @@ static enum interesting do_match(const struct name_entry *entry, */ if (ps->recursive && S_ISDIR(entry->mode)) return entry_interesting; + + /* + * When matching against submodules with + * wildcard characters, ensure that the entry + * at least matches up to the first wild + * character. More accurate matching can then + * be performed in the submodule itself. + */ + if (ps->recursive && S_ISGITLINK(entry->mode) && + !ps_strncmp(item, match + baselen, + entry->path, + item->nowildcard_len - baselen)) + return entry_interesting; } continue; @@ -1040,6 +1053,21 @@ match_wildcards: strbuf_setlen(base, base_offset + baselen); return entry_interesting; } + + /* + * When matching against submodules with + * wildcard characters, ensure that the entry + * at least matches up to the first wild + * character. More accurate matching can then + * be performed in the submodule itself. + */ + if (ps->recursive && S_ISGITLINK(entry->mode) && + !ps_strncmp(item, match, base->buf + base_offset, + item->nowildcard_len)) { + strbuf_setlen(base, base_offset + baselen); + return entry_interesting; + } + strbuf_setlen(base, base_offset + baselen); /* |
