pathspec: add match_leading_pathspec variant
The do_match_pathspec() function has the DO_MATCH_LEADING_PATHSPEC option to allow pathspecs to match when matching "src" against a pathspec like "src/path/...". This support is not exposed by match_pathspec, and the internal flags to do_match_pathspec are not exposed outside of dir.c The upcoming support for pathspecs in git diff --no-index need the LEADING matching behavior when iterating down through a directory with readdir. We could try to expose the match_pathspec_with_flags to the public API. However, DO_MATCH_EXCLUDES really shouldn't be public, and its a bit weird to only have a few of the flags become public. Instead, add match_leading_pathspec() as a function which sets both DO_MATCH_DIRECTORY and DO_MATCH_LEADING_PATHSPEC when is_dir is true. This will be used in a following change to support pathspec matching in git diff --no-index. Signed-off-by: Jacob Keller <jacob.keller@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
8613c2bb6c
commit
6e4fb00156
10
dir.c
10
dir.c
|
|
@ -577,6 +577,16 @@ int match_pathspec(struct index_state *istate,
|
|||
prefix, seen, flags);
|
||||
}
|
||||
|
||||
int match_leading_pathspec(struct index_state *istate,
|
||||
const struct pathspec *ps,
|
||||
const char *name, int namelen,
|
||||
int prefix, char *seen, int is_dir)
|
||||
{
|
||||
unsigned flags = is_dir ? DO_MATCH_DIRECTORY | DO_MATCH_LEADING_PATHSPEC : 0;
|
||||
return match_pathspec_with_flags(istate, ps, name, namelen,
|
||||
prefix, seen, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a submodule is a superset of the pathspec
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -184,6 +184,12 @@ int match_pathspec(struct index_state *istate,
|
|||
const char *name, int namelen,
|
||||
int prefix, char *seen, int is_dir);
|
||||
|
||||
/* Set both DO_MATCH_DIRECTORY and DO_MATCH_LEADING_PATHSPEC if is_dir true */
|
||||
int match_leading_pathspec(struct index_state *istate,
|
||||
const struct pathspec *ps,
|
||||
const char *name, int namelen,
|
||||
int prefix, char *seen, int is_dir);
|
||||
|
||||
/*
|
||||
* Determine whether a pathspec will match only entire index entries (non-sparse
|
||||
* files and/or entire sparse directories). If the pathspec has the potential to
|
||||
|
|
|
|||
Loading…
Reference in New Issue