git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] Reimplement read_tree_recursive() using tree_entry_interesting()

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 24, 2011, 19:07 UTC
Message-ID
<7vpqpg8hht.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1300977675-6243-1-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
Show 16 quoted lines
> read_tree_recursive() uses a very similar function, match_tree_entry, to
> tree_entry_interesting() to do its path matching. This patch kills
> match_tree_entry() in favor of tree_entry_interesting().
> ...
> +int read_tree_recursive(struct tree *tree,
> +			const char *base, int baselen,
> +			int stage, const char **match,
> +			read_tree_fn_t fn, void *context)
> +{
> +	struct strbuf sb = STRBUF_INIT;
> +	struct pathspec pathspecs;
> +	int i, ret;
> +
> +	init_pathspec(&pathspecs, match);
> +	for (i = 0; i < pathspecs.nr; i++)
> +		pathspecs.items[i].has_wildcard = 0;

I think this is going in the right direction, but I have been hoping that we would eventually stop passing "const char **" pointers around when the caller specifies what are the set of paths that are to be affected.

We still retain "const char **raw" field in "struct pathspec" even after your previous series, but I think that is because there still are too many callers that already have a "struct pathspec *pathspec" but pass only that field (i.e. "pathspec->raw") down the callchain, and converting all the callees was a bit too much to chew on during the previous series (which I consider is fine and sane). The eventual goal should be for such callers to pass the "pathspec" itself, so that the callees can learn wildcarding and all the "magic" fun stuff later.

As read_tree_recursive() has only 6 external callers, it may be a good place to start that conversion. Another offender is fill_directory() in dir.c that are used in 6 places.

Thanks.
Previous: Junio C HamanoNext: Junio C Hamano
Message 17 of 28 in “Relative ls-files”
  1. John TapsellMar 23, 2011
  2. Michael J GruberMar 23, 2011
  3. John TapsellMar 23, 2011
  4. demerphqMar 23, 2011
  5. Michael J GruberMar 23, 2011
  6. Martin LanghoffMar 23, 2011
  7. Junio C HamanoMar 23, 2011
  8. Nguyen Thai Ngoc DuyMar 23, 2011
  9. Junio C HamanoMar 23, 2011
  10. Nguyen Thai Ngoc DuyMar 23, 2011
  11. Junio C HamanoMar 23, 2011
  12. Nguyen Thai Ngoc DuyMar 24, 2011
  13. 1/2 Reimplement read_tree_recursive() using tree_entry_interesting()Nguyễn Thái Ngọc Duy, Mar 24, 2011
  14. 2/2 Convert read_tree{,_recursive} to support struct pathspecNguyễn Thái Ngọc Duy, Mar 24, 2011
  15. Nguyen Thai Ngoc DuyMar 24, 2011
  16. Junio C HamanoMar 24, 2011
  17. Junio C HamanoMar 24, 2011
  18. Junio C HamanoMar 24, 2011
  19. 1/3 Reimplement read_tree_recursive() using tree_entry_interesting()Nguyễn Thái Ngọc Duy, Mar 25, 2011
  20. 2/3 Convert read_tree{,_recursive} to support struct pathspecNguyễn Thái Ngọc Duy, Mar 25, 2011
  21. 3/3 Improve tree_entry_interesting() handling codeNguyễn Thái Ngọc Duy, Mar 25, 2011
  22. Junio C HamanoMar 24, 2011
  23. Martin LanghoffMar 23, 2011
  24. Junio C HamanoMar 23, 2011
  25. Junio C HamanoMar 23, 2011
  26. Junio C HamanoMar 23, 2011
  27. Michael J GruberMar 23, 2011
  28. Nguyen Thai Ngoc DuyMar 23, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.