]> git.ipfire.org Git - thirdparty/git.git/commitdiff
rebase -i: use struct object_id rather than looking up commit
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Wed, 4 Nov 2020 15:29:38 +0000 (15:29 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Nov 2020 22:10:41 +0000 (14:10 -0800)
We already have a struct object_id containing the oid that we want to
set ORIG_HEAD to so use that rather than converting it to a string and
then calling get_oid() on that string.

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

index cd101b2559caecb25da84741366bee01356e22f1..4e4a5e774eadf44da06fd6ea3138c6b3d9f05516 100644 (file)
@@ -370,8 +370,9 @@ static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
 
                split_exec_commands(opts->cmd, &commands);
                ret = complete_action(the_repository, &replay, flags,
-                       shortrevisions, opts->onto_name, opts->onto, head_hash,
-                       &commands, opts->autosquash, &todo_list);
+                       shortrevisions, opts->onto_name, opts->onto,
+                       &opts->orig_head, &commands, opts->autosquash,
+                       &todo_list);
        }
 
        string_list_clear(&commands, 0);
index 00acb1249624398452eb60685b33c0ede344b9fe..f79c3df86142a73628b05980acefbd668f519f61 100644 (file)
@@ -3965,21 +3965,17 @@ static int run_git_checkout(struct repository *r, struct replay_opts *opts,
 
 static int checkout_onto(struct repository *r, struct replay_opts *opts,
                         const char *onto_name, const struct object_id *onto,
-                        const char *orig_head)
+                        const struct object_id *orig_head)
 {
-       struct object_id oid;
        const char *action = reflog_message(opts, "start", "checkout %s", onto_name);
 
-       if (get_oid(orig_head, &oid))
-               return error(_("%s: not a valid OID"), orig_head);
-
        if (run_git_checkout(r, opts, oid_to_hex(onto), action)) {
                apply_autostash(rebase_path_autostash());
                sequencer_remove_state(opts);
                return error(_("could not detach HEAD"));
        }
 
-       return update_ref(NULL, "ORIG_HEAD", &oid, NULL, 0, UPDATE_REFS_MSG_ON_ERR);
+       return update_ref(NULL, "ORIG_HEAD", orig_head, NULL, 0, UPDATE_REFS_MSG_ON_ERR);
 }
 
 static int stopped_at_head(struct repository *r)
@@ -5314,7 +5310,7 @@ static int skip_unnecessary_picks(struct repository *r,
 
 int complete_action(struct repository *r, struct replay_opts *opts, unsigned flags,
                    const char *shortrevisions, const char *onto_name,
-                   struct commit *onto, const char *orig_head,
+                   struct commit *onto, const struct object_id *orig_head,
                    struct string_list *commands, unsigned autosquash,
                    struct todo_list *todo_list)
 {
index b2a501e445316fc5a6d5befb341be3cfc1c74077..ea56825488c66bd074abe3dd1a2a9fdca2709b34 100644 (file)
@@ -163,8 +163,9 @@ void todo_list_add_exec_commands(struct todo_list *todo_list,
                                 struct string_list *commands);
 int complete_action(struct repository *r, struct replay_opts *opts, unsigned flags,
                    const char *shortrevisions, const char *onto_name,
-                   struct commit *onto, const char *orig_head, struct string_list *commands,
-                   unsigned autosquash, struct todo_list *todo_list);
+                   struct commit *onto, const struct object_id *orig_head,
+                   struct string_list *commands, unsigned autosquash,
+                   struct todo_list *todo_list);
 int todo_list_rearrange_squash(struct todo_list *todo_list);
 
 /*