attr: remove index from git_attr_set_direction()
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Mon, 13 Aug 2018 16:14:33 +0000 (18:14 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Aug 2018 21:14:43 +0000 (14:14 -0700)
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 check 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.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
archive.c
attr.c
attr.h
builtin/check-attr.c
unpack-trees.c
index c81e35bf2359e898a1f47b48346dfd2ebbfe6dbe..aca9179d03921f6e0c542e3600fb9c38af18f350 100644 (file)
--- a/archive.c
+++ b/archive.c
@@ -274,7 +274,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 863fad3bd159152963b5cd91f4ef90d12769b34c..98e4953f6e87f5f5ff777ee57cedf705086e109e 100644 (file)
--- 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 3daca3c0cba58ad8d15258c1e2fa5eb74b1ad72b..01dab4a1262bc5aefadca627012cbf59c7c9df16 100644 (file)
--- 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);
 
index f7b59993d3a10952921204bbaaf4d4bf349191c5..c05573ff9cd091cbe3b5ff1980fa7fb4815f6ebd 100644 (file)
@@ -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++) {
index 14e9043f9d9eb8f3641c83795d5eb6703346576e..f25089b878a8b0842a9d6407cb6b1821867a737c 100644 (file)
@@ -353,7 +353,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);
@@ -413,7 +413,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;
 }