Re: [PATCH 10/21] tree_entry_interesting(): fix depth limit with overlapping pathspecs

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Junio C Hamano
Date: Thursday, December 16, 2010 - 4:31 pm

Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:


I am quite happy to see where this new round of this series is going so
far.  I however doubt this patch is a right approach for the problem you
are solving, especially because your longer-term (i.e. toward the rest of
the series to patch 21) plan is to allow wildcards [*1*].

One thing I am not clear is what it means to limit the recursion level
when you have wildcards.

One possible definition of interaction between limit and wildcard may be
to count the number of slashes in the part of the path that matches the
wildcarded part of the pathspec, add the number of path components
appended due to the leading directory match, and then subtract the number
of literal slashes in the wildcarded part of the pattern from the above,
and declare that a match is found if the difference is less than the
limit.

E.g. a pathspec element "a/*/x" would match "a/b/c/x", "a/b/c/d/e/x",
"a/b/x/y" and "a/b/x/y/z" without limit, and with the limit of 1:

    a/b/c/x        matches ('*' expands to "b/c")
    a/b/c/d/e/x    no ('*' has to expand to "c/d/e" and needs 2 levels)
    a/b/x/y        matches ('*' expands to "b" costing zero, "/y" needs 1)
    a/b/x/y/z      does not match

Another definition could be to count _only_ the part that is appended by
recursion (i.e. we do not count how many slashes has to match '*' in the
above examples), and as the option is called --depth, it might make more
sense.

In either case, I am not sure if "if it matches the longest pathspec, we
have the answer without looking at shorter ones" would be a good rule to
use.


[Footnote]

*1* In addition, perhaps you may later want to introduce some "negative"
match operators to pathspecs; while I am not particularly fond of that
direction at this moment, I would like to leave the door open for that
possibility, in case it turns out to be a good thing to have.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/21] nd/struct-pathspec v2, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 01/21] Add struct pathspec, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 02/21] diff-no-index: use diff_tree_setup_paths(), =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 03/21] Convert struct diff_options to use struct pa ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 04/21] tree_entry_interesting(): remove dependency ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 05/21] Move tree_entry_interesting() to tree-walk.c ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 06/21] glossary: define pathspec, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 07/21] diff-tree: convert base+baselen to writable ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 08/21] tree_entry_interesting(): refactor into sepa ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 09/21] tree_entry_interesting(): support depth limit, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 10/21] tree_entry_interesting(): fix depth limit wi ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 11/21] tree_entry_interesting(): support wildcard m ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 12/21] tree_entry_interesting(): optimize wildcard ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 13/21] pathspec: add match_pathspec_depth(), =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 14/21] Convert ce_path_match() to use struct pathspec, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 15/21] Convert ce_path_match() to use match_pathspe ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 16/21] grep: convert to use struct pathspec, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 17/21] grep: use match_pathspec_depth() for cache/w ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 18/21] strbuf: allow &quot;buf&quot; to point to the middle o ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 19/21] grep: use writable strbuf from caller in gre ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 20/21] grep: drop pathspec_matches() in favor of tr ..., =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
[PATCH 21/21] t7810: overlapping pathspecs and depth limit, =?UTF-8?q?Nguy=E1=BB ..., (Wed Dec 15, 8:02 am)
Re: [PATCH 10/21] tree_entry_interesting(): fix depth limi ..., Junio C Hamano, (Thu Dec 16, 4:31 pm)
Re: [PATCH 19/21] grep: use writable strbuf from caller in ..., Nguyen Thai Ngoc Duy, (Fri Dec 17, 2:56 am)
Re: [PATCH 14/21] Convert ce_path_match() to use struct pa ..., Nguyen Thai Ngoc Duy, (Fri Dec 17, 2:59 am)
Re: [PATCH 10/21] tree_entry_interesting(): fix depth limi ..., Nguyen Thai Ngoc Duy, (Fri Dec 17, 3:05 am)
[PATCH 14/21] struct rev_info: convert prune_data to struc ..., =?UTF-8?q?Nguy=E1=BB ..., (Fri Dec 17, 5:43 am)
[PATCH 15/21] Convert ce_path_match() to use struct pathspec, =?UTF-8?q?Nguy=E1=BB ..., (Fri Dec 17, 5:43 am)
[PATCH 19/21] grep: use writable strbuf from caller for gr ..., =?UTF-8?q?Nguy=E1=BB ..., (Fri Dec 17, 5:44 am)
[PATCH 20/21] grep: drop pathspec_matches() in favor of tr ..., =?UTF-8?q?Nguy=E1=BB ..., (Fri Dec 17, 5:45 am)
Re: [PATCH 14/21] Convert ce_path_match() to use struct pa ..., Nguyen Thai Ngoc Duy, (Fri Dec 17, 8:11 am)
Re: [PATCH 10/21] tree_entry_interesting(): fix depth limi ..., Nguyen Thai Ngoc Duy, (Fri Dec 17, 8:37 pm)