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

Re: [PATCH 3/4] pathspec: move prefix check out of the inner loop

From
Junio C Hamano <gitster@pobox.com>
Date
May 13, 2016, 04:43 UTC
Message-ID
<xmqqbn4abmak.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20160513001936.7623-4-sbeller@google.com>
Stefan Beller <sbeller@google.com> writes:
Show 7 quoted lines
> The prefix check is not related the check of pathspec magic; also there
> is no code that is relevant after we'd break the loop on a match for
> "prefix:". So move the check before the loop and shortcircuit the outer
> loop.
>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---

What were we thinking back when we added this in the middle of the loop at 233c3e6c (parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN, 2013-07-14)? I am a bit embarrassed.

Show 39 quoted lines
>  pathspec.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/pathspec.c b/pathspec.c
> index eba37c2..4dff252 100644
> --- a/pathspec.c
> +++ b/pathspec.c
> @@ -107,21 +107,22 @@ static void eat_long_magic(struct pathspec_item *item, const char *elt,
>  			nextat = copyfrom + len;
>  		if (!len)
>  			continue;
> +
> +		if (starts_with(copyfrom, "prefix:")) {
> +			char *endptr;
> +			*pathspec_prefix = strtol(copyfrom + 7,
> +						  &endptr, 10);
> +			if (endptr - copyfrom != len)
> +				die(_("invalid parameter for pathspec magic 'prefix'"));
> +			continue;
> +		}
> +
>  		for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++) {
>  			if (strlen(pathspec_magic[i].name) == len &&
>  			    !strncmp(pathspec_magic[i].name, copyfrom, len)) {
>  				*magic |= pathspec_magic[i].bit;
>  				break;
>  			}
> -			if (starts_with(copyfrom, "prefix:")) {
> -				char *endptr;
> -				*pathspec_prefix = strtol(copyfrom + 7,
> -							  &endptr, 10);
> -				if (endptr - copyfrom != len)
> -					die(_("invalid parameter for pathspec magic 'prefix'"));
> -				/* "i" would be wrong, but it does not matter */
> -				break;
> -			}
>  		}
>  		if (ARRAY_SIZE(pathspec_magic) <= i)
>  			die(_("Invalid pathspec magic '%.*s' in '%s'"),
Previous: Stefan BellerNext: Stefan Beller
Message 5 of 25 in “pathspec labels [WAS: submodule groups]”
  1. 0/4 pathspec labels [WAS: submodule groups]Stefan Beller, May 13, 2016
  2. 1/4 Documentation: correct typo in example for querying attributesStefan Beller, May 13, 2016
  3. 2/4 pathspec: move long magic parsing out of prefix_pathspecStefan Beller, May 13, 2016
  4. 3/4 pathspec: move prefix check out of the inner loopStefan Beller, May 13, 2016
  5. Junio C HamanoMay 13, 2016
  6. 4/4 pathspec: record labelsStefan Beller, May 13, 2016
  7. Junio C HamanoMay 13, 2016
  8. Stefan BellerMay 13, 2016
  9. Junio C HamanoMay 13, 2016
  10. Stefan BellerMay 13, 2016
  11. Junio C HamanoMay 13, 2016
  12. Duy NguyenMay 15, 2016
  13. Junio C HamanoMay 15, 2016
  14. Junio C HamanoMay 15, 2016
  15. Duy NguyenMay 16, 2016
  16. Stefan BellerMay 16, 2016
  17. Junio C HamanoMay 16, 2016
  18. Stefan BellerMay 16, 2016
  19. Junio C HamanoMay 16, 2016
  20. Stefan BellerMay 16, 2016
  21. Junio C HamanoMay 16, 2016
  22. Stefan BellerMay 16, 2016
  23. Junio C HamanoMay 16, 2016
  24. Stefan BellerMay 16, 2016
  25. Junio C HamanoMay 16, 2016

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.