Martin von Zweigbergk <martinv...@gmail.com> writes:

> We use the path arguments in two places in reset.c: in
> interactive_reset() and read_from_tree(). Both of these call
> get_pathspec(), so we pass the (prefix, arv) pair to both
> functions. Move the call to get_pathspec() out of these methods, for
> two reasons: 1) One argument is simpler than two. 2) It lets us use
> the (arguably clearer) "if (pathspec)" in place of "if (i < argc)".
> ---
> If I understand correctly, this should be rebased on top of
> nd/parse-pathspec. Please let me know.

Yeah, this will conflict with the get_pathspec-to-parse_pathspec
conversion Duy has been working on.

Without the interactions with that topic, the conversion seems
straightforward to me, though.

>
>  builtin/reset.c | 27 ++++++++++-----------------
>  1 file changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/builtin/reset.c b/builtin/reset.c
> index 65413d0..045c960 100644
> --- a/builtin/reset.c
> +++ b/builtin/reset.c
> @@ -153,26 +153,15 @@ static void update_index_from_diff(struct 
> diff_queue_struct *q,
>       }
>  }
>  
> -static int interactive_reset(const char *revision, const char **argv,
> -                          const char *prefix)
> -{
> -     const char **pathspec = NULL;
> -
> -     if (*argv)
> -             pathspec = get_pathspec(prefix, argv);
> -
> -     return run_add_interactive(revision, "--patch=reset", pathspec);
> -}
> -
> -static int read_from_tree(const char *prefix, const char **argv,
> -             unsigned char *tree_sha1, int refresh_flags)
> +static int read_from_tree(const char **pathspec, unsigned char *tree_sha1,
> +                       int refresh_flags)
>  {
>       struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
>       int index_fd;
>       struct diff_options opt;
>  
>       memset(&opt, 0, sizeof(opt));
> -     diff_tree_setup_paths(get_pathspec(prefix, (const char **)argv), &opt);
> +     diff_tree_setup_paths(pathspec, &opt);
>       opt.output_format = DIFF_FORMAT_CALLBACK;
>       opt.format_callback = update_index_from_diff;
>  
> @@ -216,6 +205,7 @@ int cmd_reset(int argc, const char **argv, const char 
> *prefix)
>       const char *rev = "HEAD";
>       unsigned char sha1[20], *orig = NULL, sha1_orig[20],
>                               *old_orig = NULL, sha1_old_orig[20];
> +     const char **pathspec = NULL;
>       struct commit *commit;
>       struct strbuf msg = STRBUF_INIT;
>       const struct option options[] = {
> @@ -287,22 +277,25 @@ int cmd_reset(int argc, const char **argv, const char 
> *prefix)
>               die(_("Could not parse object '%s'."), rev);
>       hashcpy(sha1, commit->object.sha1);
>  
> +     if (i < argc)
> +             pathspec = get_pathspec(prefix, argv + i);
> +
>       if (patch_mode) {
>               if (reset_type != NONE)
>                       die(_("--patch is incompatible with 
> --{hard,mixed,soft}"));
> -             return interactive_reset(rev, argv + i, prefix);
> +             return run_add_interactive(rev, "--patch=reset", pathspec);
>       }
>  
>       /* git reset tree [--] paths... can be used to
>        * load chosen paths from the tree into the index without
>        * affecting the working tree nor HEAD. */
> -     if (i < argc) {
> +     if (pathspec) {
>               if (reset_type == MIXED)
>                       warning(_("--mixed with paths is deprecated; use 'git 
> reset -- <paths>' instead."));
>               else if (reset_type != NONE)
>                       die(_("Cannot do %s reset with paths."),
>                                       _(reset_type_names[reset_type]));
> -             return read_from_tree(prefix, argv + i, sha1,
> +             return read_from_tree(pathspec, sha1,
>                               quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN);
>       }
>       if (reset_type == NONE)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to