From: Junio C Hamano Date: Mon, 13 Dec 2010 19:28:52 GMT Subject: Re: [PATCH 15/19] pathspec: add match_pathspec_depth() Message-ID: <7vzks9zd3f.fsf@alter.siamese.dyndns.org> In-Reply-To: <1292233616-27692-16-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy writes: > match_pathspec_depth() is similar to match_pathspec() except that it > can take depth limit. > > In long term, match_pathspec() should be removed in favor of this > function. Hmm, this strongly suggests that match_pathspec() should take "const struct pathspec *" which already contains the necessary information and more, including the depth limit, no? > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > dir.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ > dir.h | 3 +++ > 2 files changed, 48 insertions(+), 0 deletions(-) > > diff --git a/dir.c b/dir.c > index bb5076c..e12dbdd 100644 > --- a/dir.c > +++ b/dir.c > @@ -169,6 +169,51 @@ int match_pathspec(const char **pathspec, const char *name, int namelen, > return retval; > } > > +int match_pathspec_depth(const char **pathspec, int max_depth, > + const char *name, int namelen, > + int prefix, char *seen) > +{ > + int i, retval = 0; > + > + if (!pathspec) { > + if (max_depth == -1) > + return MATCHED_RECURSIVELY; > + > + if (within_depth(name, namelen, 0, max_depth)) > + return MATCHED_EXACTLY; Why the difference between _RECURSIVELY and _EXACTLY here? If you have a five-level deep project and give max-depth of 1000, shouldn't you get the same result as you run the same command with unlimited depth?