On 06/06, Nguyễn Thái Ngọc Duy wrote:
> Since attr checking API now take the index, there's no need to set an
> index in advance with this call. Most call sites are straightforward
> because they either pass the_index or NULL (which defaults back to
> the_index previously). There's only one suspicious call site in
> unpack-trees.c where it sets a different index.
> 
> This code in unpack-trees is about to checking out entries from the
> new/temporary index after merging is done in it. The attributes will
> be used by entry.c code to do crlf conversion if needed. entry.c now
> respects struct checkout's istate field, and this field is correctly
> set in unpack-trees.c, there should be no regression from this change.

Nice! Much cleaner.

> 
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
> ---
>  archive.c            |  2 +-
>  attr.c               | 15 +++------------
>  attr.h               |  3 +--
>  builtin/check-attr.c |  2 +-
>  unpack-trees.c       |  4 ++--
>  5 files changed, 8 insertions(+), 18 deletions(-)
> 
> diff --git a/archive.c b/archive.c
> index 1b44503ebb..d1d0a0d6b3 100644
> --- a/archive.c
> +++ b/archive.c
> @@ -273,7 +273,7 @@ int write_archive_entries(struct archiver_args *args,
>               init_tree_desc(&t, args->tree->buffer, args->tree->size);
>               if (unpack_trees(1, &t, &opts))
>                       return -1;
> -             git_attr_set_direction(GIT_ATTR_INDEX, &the_index);
> +             git_attr_set_direction(GIT_ATTR_INDEX);
>       }
>  
>       err = read_tree_recursive(args->tree, "", 0, 0, &args->pathspec,
> diff --git a/attr.c b/attr.c
> index 863fad3bd1..98e4953f6e 100644
> --- a/attr.c
> +++ b/attr.c
> @@ -708,10 +708,8 @@ static struct attr_stack *read_attr_from_array(const 
> char **list)
>   * another thread could potentially be calling into the attribute system.
>   */
>  static enum git_attr_direction direction;
> -static const struct index_state *use_index;
>  
> -void git_attr_set_direction(enum git_attr_direction new_direction,
> -                         const struct index_state *istate)
> +void git_attr_set_direction(enum git_attr_direction new_direction)
>  {
>       if (is_bare_repository() && new_direction != GIT_ATTR_INDEX)
>               BUG("non-INDEX attr direction in a bare repo");
> @@ -720,7 +718,6 @@ void git_attr_set_direction(enum git_attr_direction 
> new_direction,
>               drop_all_attr_stacks();
>  
>       direction = new_direction;
> -     use_index = istate;
>  }
>  
>  static struct attr_stack *read_attr_from_file(const char *path, int macro_ok)
> @@ -750,17 +747,11 @@ static struct attr_stack *read_attr_from_index(const 
> struct index_state *istate,
>       struct attr_stack *res;
>       char *buf, *sp;
>       int lineno = 0;
> -     const struct index_state *to_read_from;
>  
> -     /*
> -      * Temporary workaround for c24f3abace (apply: file commited
> -      * with CRLF should roundtrip diff and apply - 2017-08-19)
> -      */
> -     to_read_from = use_index ? use_index : istate;
> -     if (!to_read_from)
> +     if (!istate)
>               return NULL;
>  
> -     buf = read_blob_data_from_index(to_read_from, path, NULL);
> +     buf = read_blob_data_from_index(istate, path, NULL);
>       if (!buf)
>               return NULL;
>  
> diff --git a/attr.h b/attr.h
> index 3daca3c0cb..01dab4a126 100644
> --- a/attr.h
> +++ b/attr.h
> @@ -77,8 +77,7 @@ enum git_attr_direction {
>       GIT_ATTR_CHECKOUT,
>       GIT_ATTR_INDEX
>  };
> -void git_attr_set_direction(enum git_attr_direction new_direction,
> -                         const struct index_state *istate);
> +void git_attr_set_direction(enum git_attr_direction new_direction);
>  
>  void attr_start(void);
>  
> diff --git a/builtin/check-attr.c b/builtin/check-attr.c
> index f7b59993d3..c05573ff9c 100644
> --- a/builtin/check-attr.c
> +++ b/builtin/check-attr.c
> @@ -120,7 +120,7 @@ int cmd_check_attr(int argc, const char **argv, const 
> char *prefix)
>       }
>  
>       if (cached_attrs)
> -             git_attr_set_direction(GIT_ATTR_INDEX, NULL);
> +             git_attr_set_direction(GIT_ATTR_INDEX);
>  
>       doubledash = -1;
>       for (i = 0; doubledash < 0 && i < argc; i++) {
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 3ace82ca27..8cb407173e 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -361,7 +361,7 @@ static int check_updates(struct unpack_trees_options *o)
>       progress = get_progress(o);
>  
>       if (o->update)
> -             git_attr_set_direction(GIT_ATTR_CHECKOUT, index);
> +             git_attr_set_direction(GIT_ATTR_CHECKOUT);
>  
>       if (should_update_submodules() && o->update && !o->dry_run)
>               load_gitmodules_file(index, NULL);
> @@ -421,7 +421,7 @@ static int check_updates(struct unpack_trees_options *o)
>       stop_progress(&progress);
>       errs |= finish_delayed_checkout(&state);
>       if (o->update)
> -             git_attr_set_direction(GIT_ATTR_CHECKIN, NULL);
> +             git_attr_set_direction(GIT_ATTR_CHECKIN);
>       return errs != 0;
>  }
>  
> -- 
> 2.18.0.rc0.333.g22e6ee6cdf
> 

-- 
Brandon Williams

Reply via email to