]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reset_head(): remove action parameter
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Wed, 26 Jan 2022 13:05:41 +0000 (13:05 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Jan 2022 20:08:53 +0000 (12:08 -0800)
The only use of the action parameter is to setup the error messages
for unpack_trees(). All but two cases pass either "checkout" or
"reset". The case that passes "reset --hard" would be better passing
"reset" so that the error messages match the builtin reset command
like all the other callers that are doing a reset. The case that
passes "Fast-forwarded" is only updating HEAD and so the parameter is
unused in that case as it does not call unpack_trees(). The value to
pass to setup_unpack_trees_porcelain() can be determined by checking
whether flags contains RESET_HEAD_HARD without the caller having to
specify it.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rebase.c
reset.c
reset.h
sequencer.c

index f5c37b7d4a50470414a8f134a4ebc35b5bb93cb9..2e5a535b54eb998a17d22e72c636c6b7382ae723 100644 (file)
@@ -583,7 +583,7 @@ static int move_to_original_branch(struct rebase_options *opts)
                    opts->head_name, oid_to_hex(&opts->onto->object.oid));
        strbuf_addf(&head_reflog, "rebase finished: returning to %s",
                    opts->head_name);
-       ret = reset_head(the_repository, NULL, "", opts->head_name,
+       ret = reset_head(the_repository, NULL, opts->head_name,
                         RESET_HEAD_REFS_ONLY,
                         orig_head_reflog.buf, head_reflog.buf,
                         DEFAULT_REFLOG_ACTION);
@@ -674,7 +674,7 @@ static int run_am(struct rebase_options *opts)
                free(rebased_patches);
                strvec_clear(&am.args);
 
-               reset_head(the_repository, &opts->orig_head, "checkout",
+               reset_head(the_repository, &opts->orig_head,
                           opts->head_name, 0,
                           "HEAD", NULL, DEFAULT_REFLOG_ACTION);
                error(_("\ngit encountered an error while preparing the "
@@ -820,7 +820,7 @@ static int checkout_up_to_date(struct rebase_options *options)
        strbuf_addf(&buf, "%s: checkout %s",
                    getenv(GIT_REFLOG_ACTION_ENVIRONMENT),
                    options->switch_to);
-       if (reset_head(the_repository, &options->orig_head, "checkout",
+       if (reset_head(the_repository, &options->orig_head,
                       options->head_name, RESET_HEAD_RUN_POST_CHECKOUT_HOOK,
                       NULL, buf.buf, DEFAULT_REFLOG_ACTION) < 0)
                ret = error(_("could not switch to %s"), options->switch_to);
@@ -1272,7 +1272,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                rerere_clear(the_repository, &merge_rr);
                string_list_clear(&merge_rr, 1);
 
-               if (reset_head(the_repository, NULL, "reset", NULL, RESET_HEAD_HARD,
+               if (reset_head(the_repository, NULL, NULL, RESET_HEAD_HARD,
                               NULL, NULL, DEFAULT_REFLOG_ACTION) < 0)
                        die(_("could not discard worktree changes"));
                remove_branch_state(the_repository, 0);
@@ -1290,7 +1290,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 
                if (read_basic_state(&options))
                        exit(1);
-               if (reset_head(the_repository, &options.orig_head, "reset",
+               if (reset_head(the_repository, &options.orig_head,
                               options.head_name, RESET_HEAD_HARD,
                               NULL, NULL, DEFAULT_REFLOG_ACTION) < 0)
                        die(_("could not move back to %s"),
@@ -1759,7 +1759,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 
        strbuf_addf(&msg, "%s: checkout %s",
                    getenv(GIT_REFLOG_ACTION_ENVIRONMENT), options.onto_name);
-       if (reset_head(the_repository, &options.onto->object.oid, "checkout", NULL,
+       if (reset_head(the_repository, &options.onto->object.oid, NULL,
                       RESET_HEAD_DETACH | RESET_ORIG_HEAD |
                       RESET_HEAD_RUN_POST_CHECKOUT_HOOK,
                       NULL, msg.buf, DEFAULT_REFLOG_ACTION))
@@ -1777,7 +1777,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                strbuf_addf(&msg, "rebase finished: %s onto %s",
                        options.head_name ? options.head_name : "detached HEAD",
                        oid_to_hex(&options.onto->object.oid));
-               reset_head(the_repository, NULL, "Fast-forwarded", options.head_name,
+               reset_head(the_repository, NULL, options.head_name,
                           RESET_HEAD_REFS_ONLY, "HEAD", msg.buf,
                           DEFAULT_REFLOG_ACTION);
                strbuf_release(&msg);
diff --git a/reset.c b/reset.c
index 3537de91f65c1e4817cfd31e6734819d351f0cb7..7841b2b2a020ba8abf2fcbfc904441e42fdf4170 100644 (file)
--- a/reset.c
+++ b/reset.c
@@ -8,7 +8,7 @@
 #include "tree.h"
 #include "unpack-trees.h"
 
-int reset_head(struct repository *r, struct object_id *oid, const char *action,
+int reset_head(struct repository *r, struct object_id *oid,
               const char *switch_to_branch, unsigned flags,
               const char *reflog_orig_head, const char *reflog_head,
               const char *default_reflog_action)
@@ -23,7 +23,7 @@ int reset_head(struct repository *r, struct object_id *oid, const char *action,
        struct lock_file lock = LOCK_INIT;
        struct unpack_trees_options unpack_tree_opts = { 0 };
        struct tree *tree;
-       const char *reflog_action;
+       const char *action, *reflog_action;
        struct strbuf msg = STRBUF_INIT;
        size_t prefix_len;
        struct object_id *old_orig = NULL, oid_old_orig;
@@ -50,6 +50,7 @@ int reset_head(struct repository *r, struct object_id *oid, const char *action,
        if (refs_only)
                goto reset_head_refs;
 
+       action = reset_hard ? "reset" : "checkout";
        setup_unpack_trees_porcelain(&unpack_tree_opts, action);
        unpack_tree_opts.head_idx = 1;
        unpack_tree_opts.src_index = r->index;
diff --git a/reset.h b/reset.h
index 12f83c78e28094182530046d5891545bcb1b5e90..2daec804259455de51c2b3909e56ac9463b4fdf6 100644 (file)
--- a/reset.h
+++ b/reset.h
@@ -12,7 +12,7 @@
 #define RESET_HEAD_REFS_ONLY (1<<3)
 #define RESET_ORIG_HEAD (1<<4)
 
-int reset_head(struct repository *r, struct object_id *oid, const char *action,
+int reset_head(struct repository *r, struct object_id *oid,
               const char *switch_to_branch, unsigned flags,
               const char *reflog_orig_head, const char *reflog_head,
               const char *default_reflog_action);
index b4135a78c9133da2661384d291d9cd64523e0db1..e18329a399f50f7d0644e7c464296eb3d946d6c5 100644 (file)
@@ -4137,8 +4137,7 @@ void create_autostash(struct repository *r, const char *path,
                            path);
                write_file(path, "%s", oid_to_hex(&oid));
                printf(_("Created autostash: %s\n"), buf.buf);
-               if (reset_head(r, NULL, "reset --hard",
-                              NULL, RESET_HEAD_HARD, NULL, NULL,
+               if (reset_head(r, NULL, NULL, RESET_HEAD_HARD, NULL, NULL,
                               default_reflog_action) < 0)
                        die(_("could not reset --hard"));