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

Re: [PATCH] unpack-trees: move checkout state into check_updates

From
René Scharfe <l.s.r@web.de>
Date
Dec 29, 2016, 13:53 UTC
Message-ID
<fd00a9c2-9c9c-78bd-4700-1333574d0e21@web.de>
In-Reply-To
<20161228232616.21109-1-sbeller@google.com>
Am 29.12.2016 um 00:26 schrieb Stefan Beller:
Show 9 quoted lines
> The checkout state was introduced via 16da134b1f9
> (read-trees: refactor the unpack_trees() part, 2006-07-30). An attempt to
> refactor the checkout state was done in b56aa5b268e (unpack-trees: pass
> checkout state explicitly to check_updates(), 2016-09-13), but we can
> go even further.
>
> The `struct checkout state` is not used in unpack_trees apart from
> initializing it, so move it into the function that makes use of it,
> which is `check_updates`.
Thanks for catching this, the result looks nicer.
Show 27 quoted lines
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>  unpack-trees.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/unpack-trees.c b/unpack-trees.c
> index ea799d37c5..78703af135 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -224,14 +224,18 @@ static void unlink_entry(const struct cache_entry *ce)
>  	schedule_dir_for_removal(ce->name, ce_namelen(ce));
>  }
>
> -static int check_updates(struct unpack_trees_options *o,
> -			 const struct checkout *state)
> +static int check_updates(struct unpack_trees_options *o)
>  {
>  	unsigned cnt = 0, total = 0;
>  	struct progress *progress = NULL;
>  	struct index_state *index = &o->result;
>  	int i;
>  	int errs = 0;
> +	struct checkout state = CHECKOUT_INIT;
> +	state.force = 1;
> +	state.quiet = 1;
> +	state.refresh_cache = 1;
> +	state.istate = &o->result;

And here (as well as in two more places in this function) we could use "index" instead of "&o->result". Not sure if it's worth a patch, though.

Show 37 quoted lines
>
>  	if (o->update && o->verbose_update) {
>  		for (total = cnt = 0; cnt < index->cache_nr; cnt++) {
> @@ -270,7 +274,7 @@ static int check_updates(struct unpack_trees_options *o,
>  			display_progress(progress, ++cnt);
>  			ce->ce_flags &= ~CE_UPDATE;
>  			if (o->update && !o->dry_run) {
> -				errs |= checkout_entry(ce, state, NULL);
> +				errs |= checkout_entry(ce, &state, NULL);
>  			}
>  		}
>  	}
> @@ -1100,14 +1104,9 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
>  	int i, ret;
>  	static struct cache_entry *dfc;
>  	struct exclude_list el;
> -	struct checkout state = CHECKOUT_INIT;
>
>  	if (len > MAX_UNPACK_TREES)
>  		die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
> -	state.force = 1;
> -	state.quiet = 1;
> -	state.refresh_cache = 1;
> -	state.istate = &o->result;
>
>  	memset(&el, 0, sizeof(el));
>  	if (!core_apply_sparse_checkout || !o->update)
> @@ -1244,7 +1243,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
>  	}
>
>  	o->src_index = NULL;
> -	ret = check_updates(o, &state) ? (-2) : 0;
> +	ret = check_updates(o) ? (-2) : 0;
>  	if (o->dst_index) {
>  		if (!ret) {
>  			if (!o->result.cache_tree)
>
Previous: Stefan Beller
Message 2 of 2 in “unpack-trees: move checkout state into check_updates”
  1. unpack-trees: move checkout state into check_updatesStefan Beller, Dec 28, 2016
  2. René ScharfeDec 29, 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.