From: Phillip Wood <phillip.wood@talktalk.net>
To: Alban Gruin <alban.gruin@gmail.com>, git@vger.kernel.org
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 03/15] sequencer: refactor check_todo_list() to work on a todo_list
Date: Thu, 11 Oct 2018 12:23:02 +0100 [thread overview]
Message-ID: <b87d71e4-7fa9-fc8b-90af-7baed2671aaa@talktalk.net> (raw)
In-Reply-To: <20181007195418.25752-4-alban.gruin@gmail.com>
Hi Alban
I like the direction that this series is going
On 07/10/2018 20:54, Alban Gruin wrote:
> This refactors check_todo_list() to work on a todo_list to avoid
> redundant reads and writes to the disk. The function is renamed
> todo_list_check().
>
> As rebase -p still need to check the todo list from the disk, a new
> function is introduced, check_todo_list_from_file(). It reads the file
> from the disk, parses it, pass the todo_list to todo_list_check(), and
> writes it back to the disk.
After this commit we still use check_todo_list_from_file() even without
'-p', it would be clearer if this (and the following commits) mentioned
that the new function will be wired up later.
> As get_missing_commit_check_level() and the enum
> missing_commit_check_level are no longer needed inside of sequencer.c,
> they are moved to rebase-interactive.c, and made static again.
>
> Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
> ---
> builtin/rebase--interactive.c | 2 +-
> rebase-interactive.c | 106 ++++++++++++++++++++++++++++++++-
> rebase-interactive.h | 1 +
> sequencer.c | 109 ++++------------------------------
> sequencer.h | 9 +--
> 5 files changed, 120 insertions(+), 107 deletions(-)
>
> diff --git a/builtin/rebase--interactive.c b/builtin/rebase--interactive.c
> index a2ab68ed06..ea1f93ccb6 100644
> --- a/builtin/rebase--interactive.c
> +++ b/builtin/rebase--interactive.c
> @@ -255,7 +255,7 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
> ret = transform_todos(flags);
> break;
> case CHECK_TODO_LIST:
> - ret = check_todo_list();
> + ret = check_todo_list_from_file();
> break;
> case REARRANGE_SQUASH:
> ret = rearrange_squash();
> diff --git a/rebase-interactive.c b/rebase-interactive.c
> index 0f4119cbae..ef8540245d 100644
> --- a/rebase-interactive.c
> +++ b/rebase-interactive.c
> @@ -1,8 +1,32 @@
> #include "cache.h"
> #include "commit.h"
> -#include "rebase-interactive.h"
> #include "sequencer.h"
> +#include "rebase-interactive.h"
> #include "strbuf.h"
> +#include "commit-slab.h"
> +#include "config.h"
> +
> +enum missing_commit_check_level {
> + MISSING_COMMIT_CHECK_IGNORE = 0,
> + MISSING_COMMIT_CHECK_WARN,
> + MISSING_COMMIT_CHECK_ERROR
> +};
> +
> +static enum missing_commit_check_level get_missing_commit_check_level(void)
> +{
> + const char *value;
> +
> + if (git_config_get_value("rebase.missingcommitscheck", &value) ||
> + !strcasecmp("ignore", value))
> + return MISSING_COMMIT_CHECK_IGNORE;
> + if (!strcasecmp("warn", value))
> + return MISSING_COMMIT_CHECK_WARN;
> + if (!strcasecmp("error", value))
> + return MISSING_COMMIT_CHECK_ERROR;
> + warning(_("unrecognized setting %s for option "
> + "rebase.missingCommitsCheck. Ignoring."), value);
> + return MISSING_COMMIT_CHECK_IGNORE;
> +}
>
> void append_todo_help(unsigned edit_todo, unsigned keep_empty,
> struct strbuf *buf)
> @@ -88,3 +112,83 @@ int edit_todo_list(unsigned flags)
>
> return 0;
> }
> +
> +define_commit_slab(commit_seen, unsigned char);
> +/*
> + * Check if the user dropped some commits by mistake
> + * Behaviour determined by rebase.missingCommitsCheck.
> + * Check if there is an unrecognized command or a
> + * bad SHA-1 in a command.
> + */
> +int todo_list_check(struct todo_list *old_todo, struct todo_list *new_todo)
> +{
> + enum missing_commit_check_level check_level = get_missing_commit_check_level();
> + struct strbuf missing = STRBUF_INIT;
> + int advise_to_edit_todo = 0, res = 0, i;
> + struct commit_seen commit_seen;
> +
> + init_commit_seen(&commit_seen);
> +
> + res = todo_list_parse_insn_buffer(old_todo->buf.buf, old_todo);
While it made sense to parse the old and new todo lists here when they
were being loaded from a file, I think it is confusing to keep that
behavior now it is being passed struct todo_lists. When we get to patch
8 the newly read commit list is passed to this function without being
parsed which confused me until I came back and check what was going on here.
Best Wishes
Phillip
> + if (!res)
> + res = todo_list_parse_insn_buffer(new_todo->buf.buf, new_todo);
> + if (res) {
> + advise_to_edit_todo = res;
> + goto leave_check;
> + }
> +
> + if (check_level == MISSING_COMMIT_CHECK_IGNORE)
> + goto leave_check;
> +
> + /* Mark the commits in git-rebase-todo as seen */
> + for (i = 0; i < new_todo->nr; i++) {
> + struct commit *commit = new_todo->items[i].commit;
> + if (commit)
> + *commit_seen_at(&commit_seen, commit) = 1;
> + }
> +
> + /* Find commits in git-rebase-todo.backup yet unseen */
> + for (i = old_todo->nr - 1; i >= 0; i--) {
> + struct todo_item *item = old_todo->items + i;
> + struct commit *commit = item->commit;
> + if (commit && !*commit_seen_at(&commit_seen, commit)) {
> + strbuf_addf(&missing, " - %s %.*s\n",
> + find_unique_abbrev(&commit->object.oid, DEFAULT_ABBREV),
> + item->arg_len, item->arg);
> + *commit_seen_at(&commit_seen, commit) = 1;
> + }
> + }
> +
> + /* Warn about missing commits */
> + if (!missing.len)
> + goto leave_check;
> +
> + if (check_level == MISSING_COMMIT_CHECK_ERROR)
> + advise_to_edit_todo = res = 1;
> +
> + fprintf(stderr,
> + _("Warning: some commits may have been dropped accidentally.\n"
> + "Dropped commits (newer to older):\n"));
> +
> + /* Make the list user-friendly and display */
> + fputs(missing.buf, stderr);
> + strbuf_release(&missing);
> +
> + fprintf(stderr, _("To avoid this message, use \"drop\" to "
> + "explicitly remove a commit.\n\n"
> + "Use 'git config rebase.missingCommitsCheck' to change "
> + "the level of warnings.\n"
> + "The possible behaviours are: ignore, warn, error.\n\n"));
> +
> +leave_check:
> + clear_commit_seen(&commit_seen);
> +
> + if (advise_to_edit_todo)
> + fprintf(stderr,
> + _("You can fix this with 'git rebase --edit-todo' "
> + "and then run 'git rebase --continue'.\n"
> + "Or you can abort the rebase with 'git rebase"
> + " --abort'.\n"));
> +
> + return res;
> +}
> diff --git a/rebase-interactive.h b/rebase-interactive.h
> index 971da03776..6bc7bc315d 100644
> --- a/rebase-interactive.h
> +++ b/rebase-interactive.h
> @@ -4,5 +4,6 @@
> void append_todo_help(unsigned edit_todo, unsigned keep_empty,
> struct strbuf *buf);
> int edit_todo_list(unsigned flags);
> +int todo_list_check(struct todo_list *old_todo, struct todo_list *new_todo);
>
> #endif
> diff --git a/sequencer.c b/sequencer.c
> index bb8ca2477f..8dda61927c 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -4487,111 +4487,26 @@ int transform_todos(unsigned flags)
> return i;
> }
>
> -enum missing_commit_check_level get_missing_commit_check_level(void)
> +int check_todo_list_from_file(void)
> {
> - const char *value;
> -
> - if (git_config_get_value("rebase.missingcommitscheck", &value) ||
> - !strcasecmp("ignore", value))
> - return MISSING_COMMIT_CHECK_IGNORE;
> - if (!strcasecmp("warn", value))
> - return MISSING_COMMIT_CHECK_WARN;
> - if (!strcasecmp("error", value))
> - return MISSING_COMMIT_CHECK_ERROR;
> - warning(_("unrecognized setting %s for option "
> - "rebase.missingCommitsCheck. Ignoring."), value);
> - return MISSING_COMMIT_CHECK_IGNORE;
> -}
> -
> -define_commit_slab(commit_seen, unsigned char);
> -/*
> - * Check if the user dropped some commits by mistake
> - * Behaviour determined by rebase.missingCommitsCheck.
> - * Check if there is an unrecognized command or a
> - * bad SHA-1 in a command.
> - */
> -int check_todo_list(void)
> -{
> - enum missing_commit_check_level check_level = get_missing_commit_check_level();
> - struct strbuf todo_file = STRBUF_INIT;
> - struct todo_list todo_list = TODO_LIST_INIT;
> - struct strbuf missing = STRBUF_INIT;
> - int advise_to_edit_todo = 0, res = 0, i;
> - struct commit_seen commit_seen;
> -
> - init_commit_seen(&commit_seen);
> + struct todo_list old_todo = TODO_LIST_INIT, new_todo = TODO_LIST_INIT;
> + int res = 0;
>
> - strbuf_addstr(&todo_file, rebase_path_todo());
> - if (strbuf_read_file_or_whine(&todo_list.buf, todo_file.buf) < 0) {
> + if (strbuf_read_file_or_whine(&new_todo.buf, rebase_path_todo()) < 0) {
> res = -1;
> - goto leave_check;
> - }
> - advise_to_edit_todo = res =
> - todo_list_parse_insn_buffer(todo_list.buf.buf, &todo_list);
> -
> - if (res || check_level == MISSING_COMMIT_CHECK_IGNORE)
> - goto leave_check;
> -
> - /* Mark the commits in git-rebase-todo as seen */
> - for (i = 0; i < todo_list.nr; i++) {
> - struct commit *commit = todo_list.items[i].commit;
> - if (commit)
> - *commit_seen_at(&commit_seen, commit) = 1;
> + goto out;
> }
>
> - todo_list_release(&todo_list);
> - strbuf_addstr(&todo_file, ".backup");
> - if (strbuf_read_file_or_whine(&todo_list.buf, todo_file.buf) < 0) {
> + if (strbuf_read_file_or_whine(&old_todo.buf, rebase_path_todo_backup()) < 0) {
> res = -1;
> - goto leave_check;
> - }
> - strbuf_release(&todo_file);
> - res = !!todo_list_parse_insn_buffer(todo_list.buf.buf, &todo_list);
> -
> - /* Find commits in git-rebase-todo.backup yet unseen */
> - for (i = todo_list.nr - 1; i >= 0; i--) {
> - struct todo_item *item = todo_list.items + i;
> - struct commit *commit = item->commit;
> - if (commit && !*commit_seen_at(&commit_seen, commit)) {
> - strbuf_addf(&missing, " - %s %.*s\n",
> - short_commit_name(commit),
> - item->arg_len, item->arg);
> - *commit_seen_at(&commit_seen, commit) = 1;
> - }
> + goto out;
> }
>
> - /* Warn about missing commits */
> - if (!missing.len)
> - goto leave_check;
> -
> - if (check_level == MISSING_COMMIT_CHECK_ERROR)
> - advise_to_edit_todo = res = 1;
> + res = todo_list_check(&old_todo, &new_todo);
>
> - fprintf(stderr,
> - _("Warning: some commits may have been dropped accidentally.\n"
> - "Dropped commits (newer to older):\n"));
> -
> - /* Make the list user-friendly and display */
> - fputs(missing.buf, stderr);
> - strbuf_release(&missing);
> -
> - fprintf(stderr, _("To avoid this message, use \"drop\" to "
> - "explicitly remove a commit.\n\n"
> - "Use 'git config rebase.missingCommitsCheck' to change "
> - "the level of warnings.\n"
> - "The possible behaviours are: ignore, warn, error.\n\n"));
> -
> -leave_check:
> - clear_commit_seen(&commit_seen);
> - strbuf_release(&todo_file);
> - todo_list_release(&todo_list);
> -
> - if (advise_to_edit_todo)
> - fprintf(stderr,
> - _("You can fix this with 'git rebase --edit-todo' "
> - "and then run 'git rebase --continue'.\n"
> - "Or you can abort the rebase with 'git rebase"
> - " --abort'.\n"));
> +out:
> + todo_list_release(&old_todo);
> + todo_list_release(&new_todo);
>
> return res;
> }
> @@ -4769,7 +4684,7 @@ int complete_action(struct replay_opts *opts, unsigned flags,
>
> todo_list_release(&todo_list);
>
> - if (check_todo_list()) {
> + if (check_todo_list_from_file()) {
> checkout_onto(opts, onto_name, onto, orig_head);
> return -1;
> }
> diff --git a/sequencer.h b/sequencer.h
> index c786dee543..fb8b85bf9e 100644
> --- a/sequencer.h
> +++ b/sequencer.h
> @@ -63,12 +63,6 @@ struct replay_opts {
> };
> #define REPLAY_OPTS_INIT { .action = -1, .current_fixups = STRBUF_INIT }
>
> -enum missing_commit_check_level {
> - MISSING_COMMIT_CHECK_IGNORE = 0,
> - MISSING_COMMIT_CHECK_WARN,
> - MISSING_COMMIT_CHECK_ERROR
> -};
> -
> int write_message(const void *buf, size_t len, const char *filename,
> int append_eol);
>
> @@ -142,8 +136,7 @@ int sequencer_make_script(FILE *out, int argc, const char **argv,
>
> int sequencer_add_exec_commands(const char *command);
> int transform_todos(unsigned flags);
> -enum missing_commit_check_level get_missing_commit_check_level(void);
> -int check_todo_list(void);
> +int check_todo_list_from_file(void);
> int complete_action(struct replay_opts *opts, unsigned flags,
> const char *shortrevisions, const char *onto_name,
> const char *onto, const char *orig_head, const char *cmd,
>
next prev parent reply other threads:[~2018-10-11 11:23 UTC|newest]
Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-07 19:54 [PATCH 00/15] sequencer: refactor functions working on a todo_list Alban Gruin
2018-10-07 19:54 ` [PATCH 01/15] sequencer: clear the number of items of a todo_list before parsing Alban Gruin
2018-10-07 19:54 ` [PATCH 02/15] sequencer: make the todo_list structure public Alban Gruin
2018-10-07 19:54 ` [PATCH 03/15] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2018-10-11 11:23 ` Phillip Wood [this message]
2018-10-07 19:54 ` [PATCH 04/15] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2018-10-11 11:25 ` Phillip Wood
2018-10-11 16:57 ` Alban Gruin
2018-10-12 9:54 ` Phillip Wood
2018-10-12 12:23 ` Alban Gruin
2018-10-07 19:54 ` [PATCH 05/15] sequencer: refactor rearrange_squash() " Alban Gruin
2018-10-07 19:54 ` [PATCH 06/15] sequencer: refactor transform_todos() " Alban Gruin
2018-10-07 19:54 ` [PATCH 07/15] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2018-10-12 10:01 ` SZEDER Gábor
2018-10-19 8:16 ` Junio C Hamano
2018-10-19 9:27 ` SZEDER Gábor
2018-10-07 19:54 ` [PATCH 08/15] sequencer: change complete_action() to use the refactored functions Alban Gruin
2018-10-11 13:51 ` Phillip Wood
2018-10-11 17:06 ` Alban Gruin
2018-10-07 19:54 ` [PATCH 09/15] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2018-10-07 19:54 ` [PATCH 10/15] rebase-interactive: use todo_list_transform() in edit_todo_list() Alban Gruin
2018-10-11 15:16 ` Phillip Wood
2018-10-11 19:58 ` Alban Gruin
2018-10-07 19:54 ` [PATCH 11/15] rebase-interactive: append_todo_help() changes Alban Gruin
2018-10-07 19:54 ` [PATCH 12/15] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2018-10-07 19:54 ` [PATCH 13/15] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2018-10-07 19:54 ` [PATCH 14/15] sequencer: fix a call to error() in transform_todo_file() Alban Gruin
2018-10-07 19:54 ` [PATCH 15/15] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2018-10-07 20:51 ` [PATCH 00/15] sequencer: refactor functions working on a todo_list Alban Gruin
2018-10-27 21:29 ` [PATCH v2 00/16] " Alban Gruin
2018-10-27 21:29 ` [PATCH v2 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2018-10-27 21:29 ` [PATCH v2 02/16] sequencer: make the todo_list structure public Alban Gruin
2018-10-27 21:29 ` [PATCH v2 03/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2018-10-27 21:29 ` [PATCH v2 04/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2018-10-30 16:28 ` Phillip Wood
2018-11-01 23:31 ` Alban Gruin
2018-10-27 21:29 ` [PATCH v2 05/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2018-10-27 21:29 ` [PATCH v2 06/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2018-10-30 16:47 ` Phillip Wood
2018-11-01 23:31 ` Alban Gruin
2018-11-02 10:09 ` Phillip Wood
2018-11-02 16:26 ` Alban Gruin
2018-11-02 17:09 ` Phillip Wood
2018-10-27 21:29 ` [PATCH v2 07/16] sequencer: refactor rearrange_squash() " Alban Gruin
2018-10-27 21:29 ` [PATCH v2 08/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2018-10-27 21:29 ` [PATCH v2 09/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2018-10-27 21:29 ` [PATCH v2 10/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2018-10-27 21:29 ` [PATCH v2 11/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2018-10-27 21:29 ` [PATCH v2 12/16] rebase-interactive: append_todo_help() changes Alban Gruin
2018-10-27 21:29 ` [PATCH v2 13/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2018-10-27 21:29 ` [PATCH v2 14/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2018-10-27 21:29 ` [PATCH v2 15/16] sequencer: fix a call to error() in transform_todo_file() Alban Gruin
2018-10-27 21:29 ` [PATCH v2 16/16] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2018-10-29 3:05 ` [PATCH v2 00/16] sequencer: refactor functions working on a todo_list Junio C Hamano
2018-10-29 15:34 ` Alban Gruin
2018-11-09 8:07 ` [PATCH v3 " Alban Gruin
2018-11-09 8:07 ` [PATCH v3 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2018-11-09 8:07 ` [PATCH v3 02/16] sequencer: make the todo_list structure public Alban Gruin
2018-11-09 8:07 ` [PATCH v3 03/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2018-11-09 8:07 ` [PATCH v3 04/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2018-11-09 8:07 ` [PATCH v3 05/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2018-11-09 8:07 ` [PATCH v3 06/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2018-11-30 17:02 ` Phillip Wood
2018-11-30 19:06 ` Johannes Schindelin
2018-12-10 14:33 ` Phillip Wood
2018-12-28 19:42 ` Alban Gruin
2018-11-09 8:07 ` [PATCH v3 07/16] sequencer: refactor rearrange_squash() " Alban Gruin
2018-11-09 8:07 ` [PATCH v3 08/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2018-11-09 8:07 ` [PATCH v3 09/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2018-11-09 8:07 ` [PATCH v3 10/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2018-11-09 8:08 ` [PATCH v3 11/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2018-11-09 8:08 ` [PATCH v3 12/16] rebase-interactive: append_todo_help() changes Alban Gruin
2018-11-09 8:08 ` [PATCH v3 13/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2018-11-09 8:08 ` [PATCH v3 14/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2018-11-09 8:08 ` [PATCH v3 15/16] sequencer: fix a call to error() in transform_todo_file() Alban Gruin
2018-11-09 8:08 ` [PATCH v3 16/16] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2018-12-29 16:03 ` [PATCH v4 00/16] sequencer: refactor functions working on a todo_list Alban Gruin
2018-12-29 16:03 ` [PATCH v4 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2018-12-29 16:03 ` [PATCH v4 02/16] sequencer: make the todo_list structure public Alban Gruin
2018-12-29 16:04 ` [PATCH v4 03/16] sequencer: remove the 'arg' field from todo_item Alban Gruin
2019-01-21 14:59 ` Phillip Wood
2019-01-22 15:27 ` Johannes Schindelin
2018-12-29 16:04 ` [PATCH v4 04/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2018-12-29 16:04 ` [PATCH v4 05/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2018-12-29 16:04 ` [PATCH v4 06/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2018-12-29 16:04 ` [PATCH v4 07/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2018-12-29 16:04 ` [PATCH v4 08/16] sequencer: refactor rearrange_squash() " Alban Gruin
2018-12-29 16:04 ` [PATCH v4 09/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2018-12-29 16:04 ` [PATCH v4 10/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2018-12-29 16:04 ` [PATCH v4 11/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2018-12-29 16:04 ` [PATCH v4 12/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2018-12-29 16:04 ` [PATCH v4 13/16] rebase-interactive: append_todo_help() changes Alban Gruin
2018-12-29 16:04 ` [PATCH v4 14/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2018-12-29 16:04 ` [PATCH v4 15/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2018-12-29 16:04 ` [PATCH v4 16/16] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2019-01-23 20:58 ` [PATCH v5 00/16] sequencer: refactor functions working on a todo_list Alban Gruin
2019-01-23 20:58 ` [PATCH v5 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2019-01-23 20:58 ` [PATCH v5 02/16] sequencer: make the todo_list structure public Alban Gruin
2019-01-23 20:58 ` [PATCH v5 03/16] sequencer: remove the 'arg' field from todo_item Alban Gruin
2019-01-23 20:58 ` [PATCH v5 04/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2019-01-23 20:58 ` [PATCH v5 05/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2019-01-23 20:58 ` [PATCH v5 06/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2019-01-23 20:58 ` [PATCH v5 07/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2019-01-23 20:58 ` [PATCH v5 08/16] sequencer: refactor rearrange_squash() " Alban Gruin
2019-01-23 20:58 ` [PATCH v5 09/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2019-01-23 20:58 ` [PATCH v5 10/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2019-01-23 20:58 ` [PATCH v5 11/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2019-01-23 20:58 ` [PATCH v5 12/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2019-01-23 20:58 ` [PATCH v5 13/16] rebase-interactive: append_todo_help() changes Alban Gruin
2019-01-23 20:58 ` [PATCH v5 14/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2019-01-23 20:58 ` [PATCH v5 15/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2019-01-23 20:58 ` [PATCH v5 16/16] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2019-01-24 21:54 ` [PATCH v5 00/16] sequencer: refactor functions working on a todo_list Junio C Hamano
2019-01-24 22:43 ` Alban Gruin
2019-01-29 15:01 ` [PATCH v6 " Alban Gruin
2019-01-29 15:01 ` [PATCH v6 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2019-01-29 15:01 ` [PATCH v6 02/16] sequencer: make the todo_list structure public Alban Gruin
2019-01-29 15:01 ` [PATCH v6 03/16] sequencer: remove the 'arg' field from todo_item Alban Gruin
2019-01-29 15:01 ` [PATCH v6 04/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2019-01-29 15:01 ` [PATCH v6 05/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2019-01-29 15:01 ` [PATCH v6 06/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2019-01-29 15:01 ` [PATCH v6 07/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2019-01-31 14:30 ` Phillip Wood
2019-01-31 20:37 ` Alban Gruin
2019-01-31 20:46 ` Phillip Wood
2019-02-01 14:51 ` Phillip Wood
2019-02-02 15:09 ` Alban Gruin
2019-02-07 11:09 ` Phillip Wood
2019-01-29 15:01 ` [PATCH v6 08/16] sequencer: refactor rearrange_squash() " Alban Gruin
2019-01-29 15:01 ` [PATCH v6 09/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2019-01-29 15:01 ` [PATCH v6 10/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2019-01-29 20:14 ` Junio C Hamano
2019-01-29 20:33 ` Alban Gruin
2019-01-29 21:55 ` Junio C Hamano
2019-01-29 15:01 ` [PATCH v6 11/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2019-02-07 11:06 ` Phillip Wood
2019-01-29 15:01 ` [PATCH v6 12/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2019-01-29 15:01 ` [PATCH v6 13/16] rebase-interactive: append_todo_help() changes Alban Gruin
2019-01-29 15:01 ` [PATCH v6 14/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2019-02-01 11:03 ` Phillip Wood
2019-02-02 14:40 ` Alban Gruin
2019-02-06 21:11 ` Alban Gruin
2019-02-08 10:56 ` Phillip Wood
2019-01-29 15:01 ` [PATCH v6 15/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2019-01-29 15:01 ` [PATCH v6 16/16] rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin
2019-02-01 11:15 ` Phillip Wood
2019-02-02 15:05 ` Alban Gruin
2019-02-10 13:26 ` [PATCH v7 00/16] sequencer: refactor functions working on a todo_list Alban Gruin
2019-02-10 13:26 ` [PATCH v7 01/16] sequencer: changes in parse_insn_buffer() Alban Gruin
2019-02-10 13:26 ` [PATCH v7 02/16] sequencer: make the todo_list structure public Alban Gruin
2019-02-10 13:26 ` [PATCH v7 03/16] sequencer: remove the 'arg' field from todo_item Alban Gruin
2019-02-10 13:26 ` [PATCH v7 04/16] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2019-02-10 13:26 ` [PATCH v7 05/16] sequencer: introduce todo_list_write_to_file() Alban Gruin
2019-02-10 13:26 ` [PATCH v7 06/16] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2019-02-10 13:26 ` [PATCH v7 07/16] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2019-02-12 10:52 ` Phillip Wood
2019-02-12 15:21 ` Alban Gruin
2019-02-13 10:03 ` Phillip Wood
2019-02-10 13:26 ` [PATCH v7 08/16] sequencer: refactor rearrange_squash() " Alban Gruin
2019-02-10 13:26 ` [PATCH v7 09/16] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2019-02-10 13:26 ` [PATCH v7 10/16] sequencer: change complete_action() to use the refactored functions Alban Gruin
2019-02-10 13:26 ` [PATCH v7 11/16] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2019-02-13 10:05 ` Phillip Wood
2019-02-10 13:26 ` [PATCH v7 12/16] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2019-02-10 13:26 ` [PATCH v7 13/16] rebase-interactive: append_todo_help() changes Alban Gruin
2019-02-10 13:26 ` [PATCH v7 14/16] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2019-02-13 10:10 ` Phillip Wood
2019-02-10 13:26 ` [PATCH v7 15/16] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2019-02-10 13:26 ` [PATCH v7 16/16] rebase--interactive: move several functions to rebase--interactive.c Alban Gruin
2019-02-13 10:17 ` Phillip Wood
2019-03-05 19:17 ` [PATCH v8 00/18] sequencer: refactor functions working on a todo_list Alban Gruin
2019-03-05 19:17 ` [PATCH v8 01/18] sequencer: changes in parse_insn_buffer() Alban Gruin
2019-03-05 19:17 ` [PATCH v8 02/18] sequencer: make the todo_list structure public Alban Gruin
2019-03-05 19:17 ` [PATCH v8 03/18] sequencer: remove the 'arg' field from todo_item Alban Gruin
2019-03-05 19:17 ` [PATCH v8 04/18] sequencer: refactor transform_todos() to work on a todo_list Alban Gruin
2019-03-05 19:17 ` [PATCH v8 05/18] sequencer: introduce todo_list_write_to_file() Alban Gruin
2019-03-05 19:17 ` [PATCH v8 06/18] sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin
2019-03-05 19:17 ` [PATCH v8 07/18] sequencer: refactor sequencer_add_exec_commands() " Alban Gruin
2019-03-05 19:17 ` [PATCH v8 08/18] sequencer: refactor rearrange_squash() " Alban Gruin
2019-03-05 19:17 ` [PATCH v8 09/18] sequencer: make sequencer_make_script() write its script to a strbuf Alban Gruin
2019-03-05 19:17 ` [PATCH v8 10/18] sequencer: change complete_action() to use the refactored functions Alban Gruin
2019-03-05 19:17 ` [PATCH v8 11/18] rebase--interactive: move sequencer_add_exec_commands() Alban Gruin
2019-03-05 19:17 ` [PATCH v8 12/18] rebase--interactive: move rearrange_squash_in_todo_file() Alban Gruin
2019-03-05 19:18 ` [PATCH v8 13/18] sequencer: refactor skip_unnecessary_picks() to work on a todo_list Alban Gruin
2019-03-05 19:18 ` [PATCH v8 14/18] rebase-interactive: use todo_list_write_to_file() in edit_todo_list() Alban Gruin
2019-03-05 19:18 ` [PATCH v8 15/18] rebase-interactive: append_todo_help() changes Alban Gruin
2019-03-05 19:18 ` [PATCH v8 16/18] rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin
2019-03-05 19:18 ` [PATCH v8 17/18] sequencer: use edit_todo_list() in complete_action() Alban Gruin
2019-03-05 19:18 ` [PATCH v8 18/18] rebase--interactive: move transform_todo_file() Alban Gruin
2019-03-13 10:45 ` [PATCH v8 00/18] sequencer: refactor functions working on a todo_list 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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b87d71e4-7fa9-fc8b-90af-7baed2671aaa@talktalk.net \
--to=phillip.wood@talktalk.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=alban.gruin@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).