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

Re: [PATCH 1/4] sparse-checkout: extract add_patterns_from_input()

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 11, 2020, 16:56 UTC
Message-ID
<xmqqo8u5vz9d.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<75ee62caa940e7232e0edb50788302f36a08b5b9.1581433344.git.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
> -static int sparse_checkout_set(int argc, const char **argv, const char *prefix)
> +static void add_patterns_from_input(struct pattern_list *pl,
> +				    int argc, const char **argv)

Separating out what happens _after_ parse_options into its own helper function makes sense.

Everything, not limited to this function, works on its input, so the name suffix does not add much value to the readers. IOW, I do not think I, as a new reader of this code, would be confused if this function were called add_patterns().

If we wanted to add more words to the name, perhaps I'd use them to describe the shape of the input (e.g. "add_patterns_from_acav") but that is obvious from the list of input parameter, so...

I haven't read the rest of the series, but will we ever call this helper function with an array we manufacture ourselves? If the input array is known to be NULL terminated (and at this step in the series, it certainly is, as we are using the ac/av supplied by the C runtime entry point), perhaps we can omit argc from the parameter to simplify the calling convention a bit?

Show 33 quoted lines
>  {
>  	int i;
> -	struct pattern_list pl;
> -	int result;
> -	int changed_config = 0;
> -
> -	static struct option builtin_sparse_checkout_set_options[] = {
> -		OPT_BOOL(0, "stdin", &set_opts.use_stdin,
> -			 N_("read patterns from standard in")),
> -		OPT_END(),
> -	};
> -
> -	repo_read_index(the_repository);
> -	require_clean_work_tree(the_repository,
> -				N_("set sparse-checkout patterns"), NULL, 1, 0);
> -
> -	memset(&pl, 0, sizeof(pl));
> -
> -	argc = parse_options(argc, argv, prefix,
> -			     builtin_sparse_checkout_set_options,
> -			     builtin_sparse_checkout_set_usage,
> -			     PARSE_OPT_KEEP_UNKNOWN);
> -
>  	if (core_sparse_checkout_cone) {
>  		struct strbuf line = STRBUF_INIT;
>  
> -		hashmap_init(&pl.recursive_hashmap, pl_hashmap_cmp, NULL, 0);
> -		hashmap_init(&pl.parent_hashmap, pl_hashmap_cmp, NULL, 0);
> -		pl.use_cone_patterns = 1;
> +		hashmap_init(&pl->recursive_hashmap, pl_hashmap_cmp, NULL, 0);
> +		hashmap_init(&pl->parent_hashmap, pl_hashmap_cmp, NULL, 0);
> +		pl->use_cone_patterns = 1;
> ...
Previous: Derrick Stolee via GitGitGadgetNext: Derrick Stolee via GitGitGadget
Message 6 of 9 in “Sparse-checkout: Add subcommand and Windows paths”
  1. 0/4 Sparse-checkout: Add subcommand and Windows pathsDerrick Stolee via GitGitGadget, Feb 11, 2020
  2. 2/4 sparse-checkout: extract pattern update from 'set' subcommandDerrick Stolee via GitGitGadget, Feb 11, 2020
  3. 3/4 sparse-checkout: create 'add' subcommandDerrick Stolee via GitGitGadget, Feb 11, 2020
  4. Junio C HamanoFeb 11, 2020
  5. 1/4 sparse-checkout: extract add_patterns_from_input()Derrick Stolee via GitGitGadget, Feb 11, 2020
  6. Junio C HamanoFeb 11, 2020
  7. 4/4 sparse-checkout: work with Windows pathsDerrick Stolee via GitGitGadget, Feb 11, 2020
  8. Junio C HamanoFeb 11, 2020
  9. Jeff KingFeb 11, 2020

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.