3030#include "reset.h"
3131#include "hook.h"
3232
33- #define DEFAULT_REFLOG_ACTION "rebase"
34-
3533static char const * const builtin_rebase_usage [] = {
3634 N_ ("git rebase [-i] [options] [--exec <cmd>] "
3735 "[--onto <newbase> | --keep-base] [<upstream> [<branch>]]" ),
@@ -106,6 +104,7 @@ struct rebase_options {
106104 } flags ;
107105 struct strvec git_am_opts ;
108106 enum action action ;
107+ char * reflog_action ;
109108 int signoff ;
110109 int allow_rerere_autoupdate ;
111110 int keep_empty ;
@@ -159,6 +158,7 @@ static struct replay_opts get_replay_opts(const struct rebase_options *opts)
159158 opts -> committer_date_is_author_date ;
160159 replay .ignore_date = opts -> ignore_date ;
161160 replay .gpg_sign = xstrdup_or_null (opts -> gpg_sign_opt );
161+ replay .reflog_action = xstrdup (opts -> reflog_action );
162162 if (opts -> strategy )
163163 replay .strategy = xstrdup_or_null (opts -> strategy );
164164 else if (!replay .strategy && replay .default_strategy ) {
@@ -585,10 +585,10 @@ static int move_to_original_branch(struct rebase_options *opts)
585585 BUG ("move_to_original_branch without onto" );
586586
587587 strbuf_addf (& branch_reflog , "%s (finish): %s onto %s" ,
588- getenv ( GIT_REFLOG_ACTION_ENVIRONMENT ) ,
588+ opts -> reflog_action ,
589589 opts -> head_name , oid_to_hex (& opts -> onto -> object .oid ));
590590 strbuf_addf (& head_reflog , "%s (finish): returning to %s" ,
591- getenv ( GIT_REFLOG_ACTION_ENVIRONMENT ) , opts -> head_name );
591+ opts -> reflog_action , opts -> head_name );
592592 ropts .branch = opts -> head_name ;
593593 ropts .flags = RESET_HEAD_REFS_ONLY ;
594594 ropts .branch_msg = branch_reflog .buf ;
@@ -618,7 +618,7 @@ static int run_am(struct rebase_options *opts)
618618 am .git_cmd = 1 ;
619619 strvec_push (& am .args , "am" );
620620 strvec_pushf (& am .env , GIT_REFLOG_ACTION_ENVIRONMENT "=%s (pick)" ,
621- getenv ( GIT_REFLOG_ACTION_ENVIRONMENT ) );
621+ opts -> reflog_action );
622622 if (opts -> action == ACTION_CONTINUE ) {
623623 strvec_push (& am .args , "--resolved" );
624624 strvec_pushf (& am .args , "--resolvemsg=%s" , resolvemsg );
@@ -685,7 +685,7 @@ static int run_am(struct rebase_options *opts)
685685
686686 ropts .oid = & opts -> orig_head -> object .oid ;
687687 ropts .branch = opts -> head_name ;
688- ropts .default_reflog_action = DEFAULT_REFLOG_ACTION ;
688+ ropts .default_reflog_action = opts -> reflog_action ;
689689 reset_head (the_repository , & ropts );
690690 error (_ ("\ngit encountered an error while preparing the "
691691 "patches to replay\n"
@@ -834,8 +834,7 @@ static int checkout_up_to_date(struct rebase_options *options)
834834 int ret = 0 ;
835835
836836 strbuf_addf (& buf , "%s: checkout %s" ,
837- getenv (GIT_REFLOG_ACTION_ENVIRONMENT ),
838- options -> switch_to );
837+ options -> reflog_action , options -> switch_to );
839838 ropts .oid = & options -> orig_head -> object .oid ;
840839 ropts .branch = options -> head_name ;
841840 ropts .flags = RESET_HEAD_RUN_POST_CHECKOUT_HOOK ;
@@ -1243,7 +1242,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
12431242
12441243 if (options .action != ACTION_NONE && !in_progress )
12451244 die (_ ("No rebase in progress?" ));
1246- setenv (GIT_REFLOG_ACTION_ENVIRONMENT , "rebase" , 0 );
12471245
12481246 if (options .action == ACTION_EDIT_TODO && !is_merge (& options ))
12491247 die (_ ("The --edit-todo action can only be used during "
@@ -1258,6 +1256,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
12581256 trace2_cmd_mode (action_names [options .action ]);
12591257 }
12601258
1259+ options .reflog_action = getenv (GIT_REFLOG_ACTION_ENVIRONMENT );
1260+ options .reflog_action =
1261+ xstrdup (options .reflog_action ? options .reflog_action : "rebase" );
1262+
12611263 switch (options .action ) {
12621264 case ACTION_CONTINUE : {
12631265 struct object_id head ;
@@ -1310,7 +1312,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
13101312 exit (1 );
13111313
13121314 strbuf_addf (& head_msg , "%s (abort): returning to %s" ,
1313- getenv ( GIT_REFLOG_ACTION_ENVIRONMENT ) ,
1315+ options . reflog_action ,
13141316 options .head_name ? options .head_name
13151317 : oid_to_hex (& options .orig_head -> object .oid ));
13161318 ropts .oid = & options .orig_head -> object .oid ;
@@ -1786,13 +1788,13 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
17861788 "it...\n" ));
17871789
17881790 strbuf_addf (& msg , "%s (start): checkout %s" ,
1789- getenv ( GIT_REFLOG_ACTION_ENVIRONMENT ) , options .onto_name );
1791+ options . reflog_action , options .onto_name );
17901792 ropts .oid = & options .onto -> object .oid ;
17911793 ropts .orig_head = & options .orig_head -> object .oid ,
17921794 ropts .flags = RESET_HEAD_DETACH | RESET_ORIG_HEAD |
17931795 RESET_HEAD_RUN_POST_CHECKOUT_HOOK ;
17941796 ropts .head_msg = msg .buf ;
1795- ropts .default_reflog_action = DEFAULT_REFLOG_ACTION ;
1797+ ropts .default_reflog_action = options . reflog_action ;
17961798 if (reset_head (the_repository , & ropts ))
17971799 die (_ ("Could not detach HEAD" ));
17981800 strbuf_release (& msg );
@@ -1824,6 +1826,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
18241826cleanup :
18251827 strbuf_release (& buf );
18261828 strbuf_release (& revisions );
1829+ free (options .reflog_action );
18271830 free (options .head_name );
18281831 free (options .gpg_sign_opt );
18291832 free (options .cmd );
0 commit comments