зеркало из https://github.com/microsoft/git.git
Merge branch 'bw/pathspec-match-submodule-boundary'
An v2.12-era regression in pathspec match logic, which made it look into submodule tree even when it is not desired, has been fixed. * bw/pathspec-match-submodule-boundary: pathspec: only match across submodule boundaries when requested
This commit is contained in:
Коммит
f4f233e13d
|
@ -1015,6 +1015,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
|
|||
prefix, argv + i);
|
||||
pathspec.max_depth = opt.max_depth;
|
||||
pathspec.recursive = 1;
|
||||
pathspec.recurse_submodules = !!recurse_submodules;
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
if (list.nr || cached || show_in_pager)
|
||||
|
|
|
@ -24,6 +24,7 @@ struct pathspec {
|
|||
int nr;
|
||||
unsigned int has_wildcard:1;
|
||||
unsigned int recursive:1;
|
||||
unsigned int recurse_submodules:1;
|
||||
unsigned magic;
|
||||
int max_depth;
|
||||
struct pathspec_item {
|
||||
|
|
|
@ -93,4 +93,23 @@ test_expect_success 'command line pathspec parsing for "git log"' '
|
|||
git log --merge -- a
|
||||
'
|
||||
|
||||
test_expect_success 'tree_entry_interesting does not match past submodule boundaries' '
|
||||
test_when_finished "rm -rf repo submodule" &&
|
||||
git init submodule &&
|
||||
test_commit -C submodule initial &&
|
||||
git init repo &&
|
||||
>"repo/[bracket]" &&
|
||||
git -C repo add "[bracket]" &&
|
||||
test_tick &&
|
||||
git -C repo commit -m bracket &&
|
||||
git -C repo rev-list HEAD -- "[bracket]" >expect &&
|
||||
|
||||
git -C repo submodule add ../submodule &&
|
||||
test_tick &&
|
||||
git -C repo commit -m submodule &&
|
||||
|
||||
git -C repo rev-list HEAD -- "[bracket]" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
|
@ -1011,7 +1011,8 @@ static enum interesting do_match(const struct name_entry *entry,
|
|||
* character. More accurate matching can then
|
||||
* be performed in the submodule itself.
|
||||
*/
|
||||
if (ps->recursive && S_ISGITLINK(entry->mode) &&
|
||||
if (ps->recurse_submodules &&
|
||||
S_ISGITLINK(entry->mode) &&
|
||||
!ps_strncmp(item, match + baselen,
|
||||
entry->path,
|
||||
item->nowildcard_len - baselen))
|
||||
|
@ -1060,7 +1061,7 @@ match_wildcards:
|
|||
* character. More accurate matching can then
|
||||
* be performed in the submodule itself.
|
||||
*/
|
||||
if (ps->recursive && S_ISGITLINK(entry->mode) &&
|
||||
if (ps->recurse_submodules && S_ISGITLINK(entry->mode) &&
|
||||
!ps_strncmp(item, match, base->buf + base_offset,
|
||||
item->nowildcard_len)) {
|
||||
strbuf_setlen(base, base_offset + baselen);
|
||||
|
|
Загрузка…
Ссылка в новой задаче