All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Phillip Wood <phillip.wood@dunelm.org.uk>
Cc: Git Mailing List <git@vger.kernel.org>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [RFC PATCH 10/11] rebase: use a common action enum
Date: Tue, 19 Mar 2019 21:24:28 +0100	[thread overview]
Message-ID: <875zseehoj.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20190319190317.6632-11-phillip.wood123@gmail.com>


On Tue, Mar 19 2019, Phillip Wood wrote:

> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> cmd_rebase() and cmd_rebase__interactive() used different enums to hold
> the current action. Change to using a common enum so the values are the
> same when we change `rebase -i` to avoid forking `rebase--interactive`.
>
> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
>
> Notes:
>     I'm not sure what to do with action_names, I moved it to keep it near
>     the definition of the enum. The extra commands in the enum are not
>     traced so they don't need to be in action_names but it looks odd to
>     leave them out. Also I don't understand why action_names in NULL
>     terminated or the names are marked for translation as it is used in
>     	trace2_cmd_mode(action_names[action]);
>     so we don't use the NULL termination or translate the names (I'd be
>     surprised if we did for tracing)

Making them for translation is a bug in the recent b3a5d5a80c
("trace2:data: add subverb for rebase", 2019-02-22) and just looks like
copy/paste cargo-culting from somewhere else, and likewise with the
trailing NULL which doesn't make sense in this case.


>  builtin/rebase.c | 93 +++++++++++++++++++++++++-----------------------
>  1 file changed, 49 insertions(+), 44 deletions(-)
>
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index 21ccb6495e..26d25a5242 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -119,6 +119,30 @@ static struct replay_opts get_replay_opts(const struct rebase_options *opts)
>  	return replay;
>  }
>
> +enum action {
> +	ACTION_NONE = 0,
> +	ACTION_CONTINUE,
> +	ACTION_SKIP,
> +	ACTION_ABORT,
> +	ACTION_QUIT,
> +	ACTION_EDIT_TODO,
> +	ACTION_SHOW_CURRENT_PATCH,
> +	ACTION_SHORTEN_OIDS,
> +	ACTION_EXPAND_OIDS,
> +	ACTION_CHECK_TODO_LIST,
> +	ACTION_REARRANGE_SQUASH,
> +	ACTION_ADD_EXEC
> +};
> +
> +static const char *action_names[] = { N_("undefined"),
> +				      N_("continue"),
> +				      N_("skip"),
> +				      N_("abort"),
> +				      N_("quit"),
> +				      N_("edit_todo"),
> +				      N_("show_current_patch"),
> +				      NULL };
> +
>  static int add_exec_commands(struct string_list *commands)
>  {
>  	const char *todo_file = rebase_path_todo();
> @@ -347,10 +371,7 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
>  	unsigned flags = 0;
>  	int abbreviate_commands = 0, ret = 0;
>  	struct object_id squash_onto = null_oid;
> -	enum {
> -		NONE = 0, CONTINUE, SKIP, EDIT_TODO, SHOW_CURRENT_PATCH,
> -		SHORTEN_OIDS, EXPAND_OIDS, CHECK_TODO_LIST, REARRANGE_SQUASH, ADD_EXEC
> -	} command = 0;
> +	enum action command = ACTION_NONE;
>  	struct option options[] = {
>  		OPT_NEGBIT(0, "ff", &opts.flags, N_("allow fast-forward"),
>  			   REBASE_FORCE),
> @@ -367,22 +388,22 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
>  			N_("display a diffstat of what changed upstream"),
>  			REBASE_NO_QUIET | REBASE_VERBOSE | REBASE_DIFFSTAT),
>  		OPT_CMDMODE(0, "continue", &command, N_("continue rebase"),
> -			    CONTINUE),
> -		OPT_CMDMODE(0, "skip", &command, N_("skip commit"), SKIP),
> +			    ACTION_CONTINUE),
> +		OPT_CMDMODE(0, "skip", &command, N_("skip commit"), ACTION_SKIP),
>  		OPT_CMDMODE(0, "edit-todo", &command, N_("edit the todo list"),
> -			    EDIT_TODO),
> +			    ACTION_EDIT_TODO),
>  		OPT_CMDMODE(0, "show-current-patch", &command, N_("show the current patch"),
> -			    SHOW_CURRENT_PATCH),
> +			    ACTION_SHOW_CURRENT_PATCH),
>  		OPT_CMDMODE(0, "shorten-ids", &command,
> -			N_("shorten commit ids in the todo list"), SHORTEN_OIDS),
> +			N_("shorten commit ids in the todo list"), ACTION_SHORTEN_OIDS),
>  		OPT_CMDMODE(0, "expand-ids", &command,
> -			N_("expand commit ids in the todo list"), EXPAND_OIDS),
> +			N_("expand commit ids in the todo list"), ACTION_EXPAND_OIDS),
>  		OPT_CMDMODE(0, "check-todo-list", &command,
> -			N_("check the todo list"), CHECK_TODO_LIST),
> +			N_("check the todo list"), ACTION_CHECK_TODO_LIST),
>  		OPT_CMDMODE(0, "rearrange-squash", &command,
> -			N_("rearrange fixup/squash lines"), REARRANGE_SQUASH),
> +			N_("rearrange fixup/squash lines"), ACTION_REARRANGE_SQUASH),
>  		OPT_CMDMODE(0, "add-exec-commands", &command,
> -			N_("insert exec commands in todo list"), ADD_EXEC),
> +			N_("insert exec commands in todo list"), ACTION_ADD_EXEC),
>  		{ OPTION_CALLBACK, 0, "onto", &opts.onto, N_("onto"), N_("onto"),
>  		  PARSE_OPT_NONEG, parse_opt_commit, 0 },
>  		{ OPTION_CALLBACK, 0, "restrict-revision", &opts.restrict_revision,
> @@ -428,36 +449,36 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
>  	flags |= abbreviate_commands ? TODO_LIST_ABBREVIATE_CMDS : 0;
>  	flags |= opts.rebase_merges ? TODO_LIST_REBASE_MERGES : 0;
>  	flags |= opts.rebase_cousins > 0 ? TODO_LIST_REBASE_COUSINS : 0;
> -	flags |= command == SHORTEN_OIDS ? TODO_LIST_SHORTEN_IDS : 0;
> +	flags |= command == ACTION_SHORTEN_OIDS ? TODO_LIST_SHORTEN_IDS : 0;
>
>  	if (opts.rebase_cousins >= 0 && !opts.rebase_merges)
>  		warning(_("--[no-]rebase-cousins has no effect without "
>  			  "--rebase-merges"));
>
>  	switch (command) {
> -	case NONE: {
> +	case ACTION_NONE: {
>  		if (!opts.onto && !opts.upstream)
>  			die(_("a base commit must be provided with --upstream or --onto"));
>
>  		ret = do_interactive_rebase(&opts, flags);
>  		break;
>  	}
> -	case SKIP: {
> +	case ACTION_SKIP: {
>  		struct string_list merge_rr = STRING_LIST_INIT_DUP;
>
>  		rerere_clear(the_repository, &merge_rr);
>  	}
>  		/* fallthrough */
> -	case CONTINUE: {
> +	case ACTION_CONTINUE: {
>  		struct replay_opts replay_opts = get_replay_opts(&opts);
>
>  		ret = sequencer_continue(the_repository, &replay_opts);
>  		break;
>  	}
> -	case EDIT_TODO:
> +	case ACTION_EDIT_TODO:
>  		ret = edit_todo_file(flags);
>  		break;
> -	case SHOW_CURRENT_PATCH: {
> +	case ACTION_SHOW_CURRENT_PATCH: {
>  		struct child_process cmd = CHILD_PROCESS_INIT;
>
>  		cmd.git_cmd = 1;
> @@ -466,17 +487,17 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
>
>  		break;
>  	}
> -	case SHORTEN_OIDS:
> -	case EXPAND_OIDS:
> +	case ACTION_SHORTEN_OIDS:
> +	case ACTION_EXPAND_OIDS:
>  		ret = transform_todo_file(flags);
>  		break;
> -	case CHECK_TODO_LIST:
> +	case ACTION_CHECK_TODO_LIST:
>  		ret = check_todo_list_from_file(the_repository);
>  		break;
> -	case REARRANGE_SQUASH:
> +	case ACTION_REARRANGE_SQUASH:
>  		ret = rearrange_squash_in_todo_file();
>  		break;
> -	case ADD_EXEC: {
> +	case ACTION_ADD_EXEC: {
>  		struct string_list commands = STRING_LIST_INIT_DUP;
>
>  		split_exec_commands(opts.cmd, &commands);
> @@ -1417,23 +1438,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>  	struct strbuf revisions = STRBUF_INIT;
>  	struct strbuf buf = STRBUF_INIT;
>  	struct object_id merge_base;
> -	enum {
> -		NO_ACTION,
> -		ACTION_CONTINUE,
> -		ACTION_SKIP,
> -		ACTION_ABORT,
> -		ACTION_QUIT,
> -		ACTION_EDIT_TODO,
> -		ACTION_SHOW_CURRENT_PATCH,
> -	} action = NO_ACTION;
> -	static const char *action_names[] = { N_("undefined"),
> -					      N_("continue"),
> -					      N_("skip"),
> -					      N_("abort"),
> -					      N_("quit"),
> -					      N_("edit_todo"),
> -					      N_("show_current_patch"),
> -					      NULL };
> +	enum action action = ACTION_NONE;
>  	const char *gpg_sign = NULL;
>  	struct string_list exec = STRING_LIST_INIT_NODUP;
>  	const char *rebase_merges = NULL;
> @@ -1600,7 +1605,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>  			     builtin_rebase_options,
>  			     builtin_rebase_usage, 0);
>
> -	if (action != NO_ACTION && total_argc != 2) {
> +	if (action != ACTION_NONE && total_argc != 2) {
>  		usage_with_options(builtin_rebase_usage,
>  				   builtin_rebase_options);
>  	}
> @@ -1609,7 +1614,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>  		usage_with_options(builtin_rebase_usage,
>  				   builtin_rebase_options);
>
> -	if (action != NO_ACTION && !in_progress)
> +	if (action != ACTION_NONE && !in_progress)
>  		die(_("No rebase in progress?"));
>  	setenv(GIT_REFLOG_ACTION_ENVIRONMENT, "rebase", 0);
>
> @@ -1709,7 +1714,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>  		options.action = "show-current-patch";
>  		options.dont_finish_rebase = 1;
>  		goto run_rebase;
> -	case NO_ACTION:
> +	case ACTION_NONE:
>  		break;
>  	default:
>  		BUG("action: %d", action);

  reply	other threads:[~2019-03-19 20:24 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-19 19:03 [RFC PATCH 00/11] rebase -i run without forking rebase--interactive Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 01/11] sequencer: always discard index after checkout Phillip Wood
2019-03-20  1:50   ` Duy Nguyen
2019-03-21 14:35     ` Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 02/11] rebase: rename write_basic_state() Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 03/11] rebase: use OPT_RERERE_AUTOUPDATE() Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 04/11] rebase -i: combine rebase--interactive.c with rebase.c Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 05/11] rebase -i: remove duplication Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 06/11] rebase -i: use struct commit when parsing options Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 07/11] rebase -i: use struct object_id for squash_onto Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 08/11] rebase -i: use struct rebase_options to parse args Phillip Wood
2019-03-21  4:21   ` Junio C Hamano
2019-03-21 14:59     ` Phillip Wood
2019-03-22  3:34       ` Junio C Hamano
2019-03-21 21:13   ` Alban Gruin
2019-04-10 19:16     ` Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 09/11] rebase -i: use struct rebase_options in do_interactive_rebase() Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 10/11] rebase: use a common action enum Phillip Wood
2019-03-19 20:24   ` Ævar Arnfjörð Bjarmason [this message]
2019-03-21 14:43     ` Phillip Wood
2019-03-19 19:03 ` [RFC PATCH 11/11] rebase -i: run without forking rebase--interactive Phillip Wood
2019-03-20 20:50 ` [RFC PATCH 00/11] rebase -i " Josh Steadmon
2019-03-20 23:05 ` Ævar Arnfjörð Bjarmason
2019-03-21 14:40   ` Phillip Wood
2019-03-21  1:44 ` Junio C Hamano
2019-04-17 14:30 ` [PATCH v1 00/12] Run rebase -i " Phillip Wood
2019-04-17 14:30   ` [PATCH v1 01/12] sequencer: always discard index after checkout Phillip Wood
2019-04-17 14:30   ` [PATCH v1 02/12] rebase: don't translate trace strings Phillip Wood
2019-04-19  5:53     ` Junio C Hamano
2019-04-25 17:47       ` Phillip Wood
2019-04-17 14:30   ` [PATCH v1 03/12] rebase: rename write_basic_state() Phillip Wood
2019-04-17 14:30   ` [PATCH v1 04/12] rebase: use OPT_RERERE_AUTOUPDATE() Phillip Wood
2019-04-17 14:30   ` [PATCH v1 05/12] rebase -i: combine rebase--interactive.c with rebase.c Phillip Wood
2019-04-17 14:30   ` [PATCH v1 06/12] rebase -i: remove duplication Phillip Wood
2019-04-17 14:30   ` [PATCH v1 07/12] rebase -i: use struct commit when parsing options Phillip Wood
2019-04-17 14:30   ` [PATCH v1 08/12] rebase -i: use struct object_id for squash_onto Phillip Wood
2019-04-17 14:30   ` [PATCH v1 09/12] rebase -i: use struct rebase_options to parse args Phillip Wood
2019-04-17 14:30   ` [PATCH v1 10/12] rebase -i: use struct rebase_options in do_interactive_rebase() Phillip Wood
2019-04-17 14:30   ` [PATCH v1 11/12] rebase: use a common action enum Phillip Wood
2019-04-17 14:30   ` [PATCH v1 12/12] rebase -i: run without forking rebase--interactive Phillip Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875zseehoj.fsf@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=phillip.wood@dunelm.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.