From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> In order to remove index compatibility macros cleanly, we relied upon static globals 'repo' and 'istate' to be pointers to the_repository and the_index, respectively. We can continue reducing the need for these static globals by modifying method prototypes to use them when necessary. Move the remaining 'struct repository *repo' further down the file and use method parameters to pass it around instead. The only remaining change is to remove the static global entirely, but that requires updating the parse-opt callbacks, which need a different solution. Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> --- builtin/update-index.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/builtin/update-index.c b/builtin/update-index.c index 9a83603c0db..3e01d62865f 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -593,9 +593,9 @@ static const char * const update_index_usage[] = { static struct object_id head_oid; static struct object_id merge_head_oid; -static struct repository *repo; -static struct cache_entry *read_one_ent(const char *which, +static struct cache_entry *read_one_ent(struct repository *repo, + const char *which, struct object_id *ent, const char *path, int namelen, int stage) { @@ -623,7 +623,8 @@ static struct cache_entry *read_one_ent(const char *which, return ce; } -static int unresolve_one(const char *path) +static int unresolve_one(struct repository *repo, + const char *path) { int namelen = strlen(path); int pos; @@ -665,8 +666,8 @@ static int unresolve_one(const char *path) * stuff HEAD version in stage #2, * stuff MERGE_HEAD version in stage #3. */ - ce_2 = read_one_ent("our", &head_oid, path, namelen, 2); - ce_3 = read_one_ent("their", &merge_head_oid, path, namelen, 3); + ce_2 = read_one_ent(repo, "our", &head_oid, path, namelen, 2); + ce_3 = read_one_ent(repo, "their", &merge_head_oid, path, namelen, 3); if (!ce_2 || !ce_3) { ret = -1; @@ -705,7 +706,8 @@ static void read_head_pointers(void) } } -static int do_unresolve(int ac, const char **av, +static int do_unresolve(struct repository *repo, + int ac, const char **av, const char *prefix, int prefix_length) { int i; @@ -719,13 +721,14 @@ static int do_unresolve(int ac, const char **av, for (i = 1; i < ac; i++) { const char *arg = av[i]; char *p = prefix_path(prefix, prefix_length, arg); - err |= unresolve_one(p); + err |= unresolve_one(repo, p); free(p); } return err; } -static int do_reupdate(int ac, const char **av, +static int do_reupdate(struct repository *repo, + int ac, const char **av, const char *prefix) { /* Read HEAD and run update-index on paths that are @@ -754,7 +757,7 @@ static int do_reupdate(int ac, const char **av, if (ce_stage(ce) || !ce_path_match(repo->index, ce, &pathspec, NULL)) continue; if (has_head) - old = read_one_ent(NULL, &head_oid, + old = read_one_ent(repo, NULL, &head_oid, ce->name, ce_namelen(ce), 0); if (old && ce->ce_mode == old->ce_mode && oideq(&ce->oid, &old->oid)) { @@ -782,6 +785,8 @@ struct refresh_params { int *has_errors; }; +static struct repository *repo; + static int refresh(struct refresh_params *o, unsigned int flag) { setup_work_tree(); @@ -921,8 +926,8 @@ static enum parse_opt_result unresolve_callback( BUG_ON_OPT_ARG(arg); /* consume remaining arguments. */ - *has_errors = do_unresolve(ctx->argc, ctx->argv, - prefix, prefix ? strlen(prefix) : 0); + *has_errors = do_unresolve(repo, ctx->argc, ctx->argv, + prefix, prefix ? strlen(prefix) : 0); if (*has_errors) repo->index->cache_changed = 0; @@ -943,7 +948,7 @@ static enum parse_opt_result reupdate_callback( /* consume remaining arguments. */ setup_work_tree(); - *has_errors = do_reupdate(ctx->argc, ctx->argv, prefix); + *has_errors = do_reupdate(repo, ctx->argc, ctx->argv, prefix); if (*has_errors) repo->index->cache_changed = 0; -- gitgitgadget