From: Alban Gruin <alban.gruin@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>,
Christian Couder <christian.couder@gmail.com>,
Pratik Karki <predatoramigo@gmail.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
phillip.wood@dunelm.org.uk
Subject: Re: [GSoC][PATCH v3 10/13] rebase--interactive: rewrite complete_action() in C
Date: Wed, 11 Jul 2018 16:25:52 +0200 [thread overview]
Message-ID: <c7c20d70-3ad0-4298-66fd-a10e5bb4a91d@gmail.com> (raw)
In-Reply-To: <xmqq4lh667qw.fsf@gitster-ct.c.googlers.com>
Hi Junio,
Le 11/07/2018 à 00:33, Junio C Hamano a écrit :
> Alban Gruin <alban.gruin@gmail.com> writes:
>> - complete_action
>> + exec git rebase--helper --complete-action "$shortrevisions" "$onto_name" \
>> + "$shortonto" "$orig_head" "$cmd" $allow_empty_message \
>> + ${autosquash:+--autosquash} ${keep_empty:+--keep-empty} \
>> + ${verbose:+--verbose} ${force_rebase:+--no-ff}
>
> The $allow_empty_message and later options are all dashed ones.
> git-rebase.sh gives us either empty or --allow-empty-message in the
> variable for $allow_empty_message, and if you follow suit to prepare
> all the other variables that way, the ugly ${frotz+=--frotz} dance
> will all become unnecessary here.
>
Good idea.
>> +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,
>> + unsigned autosquash, unsigned keep_empty)
>> +{
>> + const char *shortonto, *todo_file = rebase_path_todo();
>> + struct todo_list todo_list = TODO_LIST_INIT;
>> + struct strbuf *buf = &(todo_list.buf);
>> + struct object_id oid;
>> + struct stat st;
>> +
>> + get_oid(onto, &oid);
>> + shortonto = find_unique_abbrev(&oid, DEFAULT_ABBREV);
>> +
>> + if (!lstat(todo_file, &st) && st.st_size == 0 &&
>> + write_message("noop\n", 5, todo_file, 0))
>> + return error_errno(_("could not write '%s'"), todo_file);
>
> Wait a minute... thinking back to the early "age-old ommission"
> topic, can the todo file be a non-empty file that does not have any
> command (e.g. just a single blank line, or full of comments and
> nothing else)? The original wouldn't have added "noop" and then the
> first "do we have anything to do?" check would still have been
> necessary, which would mean that ff74126c's not removing the first
> check was actually not a bug but was a cautious and sensible thing
> to do, and removal of that exact check by this commit becomes a
> regression. So,... can the todo file be a non-empty file that does
> not have any command in it at this point?
>
Hum, yes, if the commits are empty, and if rebase was invoked without
the `--keep-empty` flag. In this case, it would die with the message
“Nothing to do”, instead of dropping the commit altogether.
I will add a test case in the next iteration.
>> + if (autosquash && rearrange_squash())
>> + return 0;
>
> The original, when rearrange-squash failed, exited with failure,
> like so:
>
> - test -z "$autosquash" || git rebase--helper --rearrange-squash || exit
>
> Now this function returns success when rearrange_squash fails.
> Is that intended?
>
Yes, it is. I just saw in the man page that `exit` returns the last
exit status.
>> + if (cmd && *cmd)
>
> Shouldn't it be a BUG (programming error) if cmd == NULL? I thought
> the caller of complete_action() in this patch insisted that it got
> argc == 6 or something, so *cmd might be NUL but cmd would never be
> NULL if I understand your code correctly. IOW, shouldn't the line
> be more like:
>
> if (!cmd)
> BUG("...");
> if (*cmd)
>
> ?
>
I don’t know, it’s not really problematic if cmd is NULL. And I think
that when interactive rebase will be a builtin, it will be possible for
cmd to be NULL.
>
>> + if (strbuf_read_file(buf, todo_file, 0) < 0)
>> + return error_errno(_("could not read '%s'."), todo_file);
>> + if (parse_insn_buffer(buf->buf, &todo_list)) {
>
> Nice that we have parse* function. We do not have to work with
> stripspace plus "wc -l" ;-).
>
>> + todo_list_release(&todo_list);
>> + return error(_("unusable todo list: '%s'"), todo_file);
>
> When the users see this error message, is it easy for them to
> diagnose what went wrong (e.g. has parse_insn_buffer() already
> issued some message to help pinpoint which insn in the todo list is
> misspelt, for example)?
>
Yes, parse_insn_buffer() will say which line caused the error. But at
this point, the user should not have changed the todo-list, so this
error should never appear.
Perhaps this is a good use case of BUG()?
>> + }
>> +
>> + strbuf_addch(buf, '\n');
>> + strbuf_commented_addf(buf, Q_("Rebase %s onto %s (%d command)",
>> + "Rebase %s onto %s (%d commands)",
>> + todo_list.nr),
>> + shortrevisions, shortonto, todo_list.nr);
>> + append_todo_help(0, keep_empty, buf);
>> +
>> + if (write_message(buf->buf, buf->len, todo_file, 0)) {
>> + todo_list_release(&todo_list);
>> + return error_errno(_("could not write '%s'"), todo_file);
>> + }
>> + copy_file(rebase_path_todo_backup(), todo_file, 0666);
>> + transform_todos(flags | TODO_LIST_SHORTEN_IDS);
>> +
>
> It is a bit sad that we are mostly working on the byte array
> buf->buf (or external file touched by various helper functions we
> call), even though we have a perfectly usable parsed representation
> in todo_list structure in all of the above and the rest of this
> function.
>
> It might be better to grab todo_list.nr into a local simple integer
> variable immediately after parse_insn_buffer() returns and then call
> todo_list_release() on todo_list, as the parsed todo-list is only
> used for two purposes (i.e. detecting format error by seeing if
> parser returns success, and seeing how many insns are on the todo
> list by checking todo_list.nr field) and nothing else. By releasing
> the otherwise unused todo_list early, you do not have to sprinkle
> various error return codepaths with calls to todo_list_release().
>
> That incidentally would manage too high expectation from readers of
> the code as well ;-).
>
Unfortunately, this strbuf is part of the todo_list, and it will be
freed if I call todo_list_release().
:/
Cheers,
Alban
next prev parent reply other threads:[~2018-07-11 14:26 UTC|newest]
Thread overview: 193+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-02 10:57 [GSoC][PATCH v2 0/7] rebase -i: rewrite some parts in C Alban Gruin
2018-07-02 10:57 ` [GSoC][PATCH v2 1/7] sequencer: make two functions and an enum from sequencer.c public Alban Gruin
2018-07-03 20:20 ` Junio C Hamano
2018-07-05 15:35 ` Alban Gruin
2018-07-02 10:57 ` [GSoC][PATCH v2 2/7] rebase--interactive: rewrite append_todo_help() in C Alban Gruin
2018-07-03 20:29 ` Junio C Hamano
2018-07-02 10:57 ` [GSoC][PATCH v2 3/7] editor: add a function to launch the sequence editor Alban Gruin
2018-07-03 20:32 ` Junio C Hamano
2018-07-02 10:57 ` [GSoC][PATCH v2 4/7] rebase-interactive: rewrite the edit-todo functionality in C Alban Gruin
2018-07-02 10:57 ` [GSoC][PATCH v2 5/7] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-07-03 20:36 ` Junio C Hamano
2018-07-02 10:57 ` [GSoC][PATCH v2 6/7] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-07-03 20:37 ` Junio C Hamano
2018-07-06 12:58 ` Johannes Schindelin
2018-07-06 15:02 ` Junio C Hamano
2018-07-06 18:54 ` Johannes Schindelin
2018-07-06 21:55 ` Junio C Hamano
2018-07-07 16:40 ` Junio C Hamano
2018-07-02 10:57 ` [GSoC][PATCH v2 7/7] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-07-10 12:15 ` [GSoC][PATCH v3 00/13] rebase -i: rewrite some parts " Alban Gruin
2018-07-10 12:15 ` [GSoC][PATCH v3 01/13] sequencer: make two functions and an enum from sequencer.c public Alban Gruin
2018-07-10 17:53 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 02/13] rebase--interactive: rewrite append_todo_help() in C Alban Gruin
2018-07-10 12:21 ` Alban Gruin
2018-07-10 17:56 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 03/13] editor: add a function to launch the sequence editor Alban Gruin
2018-07-10 12:23 ` Alban Gruin
2018-07-10 17:58 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 04/13] rebase-interactive: rewrite the edit-todo functionality in C Alban Gruin
2018-07-10 18:00 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 05/13] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-07-10 18:13 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 06/13] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-07-10 18:20 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 07/13] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-07-10 18:22 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 08/13] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-07-10 18:30 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 09/13] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-07-10 18:38 ` Junio C Hamano
2018-07-10 18:52 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 10/13] rebase--interactive: rewrite complete_action() in C Alban Gruin
2018-07-10 22:33 ` Junio C Hamano
2018-07-11 14:25 ` Alban Gruin [this message]
2018-07-10 12:15 ` [GSoC][PATCH v3 11/13] rebase--interactive: remove unused modes and functions Alban Gruin
2018-07-10 22:36 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 12/13] rebase -i: implement the logic to initialize the variable $revision in C Alban Gruin
2018-07-12 18:15 ` Junio C Hamano
2018-07-12 18:24 ` Junio C Hamano
2018-07-10 12:15 ` [GSoC][PATCH v3 13/13] rebase -i: rewrite the rest of init_revisions_and_shortrevisions " Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 00/20] rebase -i: rewrite " Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 01/20] sequencer: make two functions and an enum from sequencer.c public Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 02/20] rebase -i: rewrite append_todo_help() in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 03/20] editor: add a function to launch the sequence editor Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 04/20] rebase -i: rewrite the edit-todo functionality in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 05/20] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 06/20] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 07/20] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 08/20] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 09/20] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 10/20] t3404: todo list with commented-out commands only aborts Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 11/20] rebase -i: rewrite complete_action() in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 12/20] rebase -i: remove unused modes and functions Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 13/20] rebase -i: implement the logic to initialize $revisions in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 14/20] rebase -i: rewrite the rest of init_revisions_and_shortrevisions() " Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 15/20] rebase -i: rewrite write_basic_state() " Alban Gruin
2018-07-30 18:25 ` SZEDER Gábor
2018-07-30 22:11 ` Alban Gruin
2018-07-31 12:11 ` [GSoC][PATCH v4] fixup! " Alban Gruin
2018-07-31 15:23 ` Junio C Hamano
2018-07-31 15:59 ` Alban Gruin
2018-07-31 16:04 ` Junio C Hamano
2018-07-31 17:25 ` Junio C Hamano
2018-08-03 13:26 ` [GSoC][PATCH v4 15/20] " Jeff King
2018-07-24 16:32 ` [GSoC][PATCH v4 16/20] rebase -i: rewrite init_basic_state() " Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 17/20] rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 18/20] rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 19/20] rebase -i: remove git-rebase--interactive.sh Alban Gruin
2018-07-24 16:32 ` [GSoC][PATCH v4 20/20] rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin
2018-07-25 18:45 ` [GSoC][PATCH v4 00/20] rebase -i: rewrite in C Stefan Beller
2018-07-25 22:43 ` Junio C Hamano
2018-07-31 17:59 ` [GSoC][PATCH v5 " Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 01/20] sequencer: make two functions and an enum from sequencer.c public Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 02/20] rebase -i: rewrite append_todo_help() in C Alban Gruin
2018-08-07 13:57 ` Phillip Wood
2018-08-07 15:25 ` Christian Couder
2018-08-07 16:15 ` Phillip Wood
2018-08-07 16:28 ` Christian Couder
2018-08-07 17:31 ` Phillip Wood
2018-08-08 15:16 ` Alban Gruin
2018-08-08 16:00 ` Phillip Wood
2018-07-31 17:59 ` [GSoC][PATCH v5 03/20] editor: add a function to launch the sequence editor Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 04/20] rebase -i: rewrite the edit-todo functionality in C Alban Gruin
2018-08-07 14:00 ` Phillip Wood
2018-08-08 15:17 ` Alban Gruin
2018-08-08 16:04 ` Phillip Wood
2018-08-09 13:30 ` Alban Gruin
2018-08-09 15:35 ` Phillip Wood
2018-08-09 16:09 ` Phillip Wood
2018-07-31 17:59 ` [GSoC][PATCH v5 05/20] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 06/20] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 07/20] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 08/20] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 09/20] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 10/20] t3404: todo list with commented-out commands only aborts Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 11/20] rebase -i: rewrite complete_action() in C Alban Gruin
2018-08-09 14:22 ` Phillip Wood
2018-08-09 17:00 ` Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 12/20] rebase -i: remove unused modes and functions Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 13/20] rebase -i: implement the logic to initialize $revisions in C Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 14/20] rebase -i: rewrite the rest of init_revisions_and_shortrevisions() " Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 15/20] rebase -i: rewrite write_basic_state() " Alban Gruin
2018-07-31 17:59 ` [GSoC][PATCH v5 16/20] rebase -i: rewrite init_basic_state() " Alban Gruin
2018-07-31 18:00 ` [GSoC][PATCH v5 17/20] rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin
2018-07-31 18:00 ` [GSoC][PATCH v5 18/20] rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin
2018-07-31 18:00 ` [GSoC][PATCH v5 19/20] rebase -i: remove git-rebase--interactive.sh Alban Gruin
2018-07-31 18:00 ` [GSoC][PATCH v5 20/20] rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin
2018-07-31 19:28 ` [GSoC][PATCH v5 00/20] rebase -i: rewrite in C Junio C Hamano
2018-08-10 16:51 ` [GSoC][PATCH v6 " Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 01/20] sequencer: make three functions and an enum from sequencer.c public Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 02/20] rebase -i: rewrite append_todo_help() in C Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 03/20] editor: add a function to launch the sequence editor Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 04/20] rebase -i: rewrite the edit-todo functionality in C Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 05/20] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 06/20] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 07/20] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 08/20] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 09/20] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 10/20] t3404: todo list with commented-out commands only aborts Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 11/20] rebase -i: rewrite complete_action() in C Alban Gruin
2018-08-10 19:25 ` Junio C Hamano
2018-08-10 19:36 ` Alban Gruin
2018-08-10 20:27 ` Junio C Hamano
2018-08-10 21:15 ` Alban Gruin
2018-08-17 13:16 ` Phillip Wood
2018-08-10 16:51 ` [GSoC][PATCH v6 12/20] rebase -i: remove unused modes and functions Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 13/20] rebase -i: implement the logic to initialize $revisions in C Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 14/20] rebase -i: rewrite the rest of init_revisions_and_shortrevisions() " Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 15/20] rebase -i: rewrite write_basic_state() " Alban Gruin
2018-08-17 13:27 ` Phillip Wood
2018-08-23 21:27 ` Johannes Schindelin
2018-08-10 16:51 ` [GSoC][PATCH v6 16/20] rebase -i: rewrite init_basic_state() " Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 17/20] rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 18/20] rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin
2018-08-22 21:14 ` Johannes Schindelin
2018-08-22 21:30 ` Junio C Hamano
2018-08-23 21:08 ` Johannes Schindelin
2018-08-10 16:51 ` [GSoC][PATCH v6 19/20] rebase -i: remove git-rebase--interactive.sh Alban Gruin
2018-08-10 16:51 ` [GSoC][PATCH v6 20/20] rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin
2018-08-13 16:06 ` [GSoC][PATCH v6 00/20] rebase -i: rewrite in C Duy Nguyen
2018-08-13 20:47 ` Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 " Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 01/20] sequencer: make three functions and an enum from sequencer.c public Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 02/20] rebase -i: rewrite append_todo_help() in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 03/20] editor: add a function to launch the sequence editor Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 04/20] rebase -i: rewrite the edit-todo functionality in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 05/20] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 06/20] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 07/20] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 08/20] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 09/20] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 10/20] t3404: todo list with commented-out commands only aborts Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 11/20] rebase -i: rewrite complete_action() in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 12/20] rebase -i: remove unused modes and functions Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 13/20] rebase -i: implement the logic to initialize $revisions in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 14/20] rebase -i: rewrite the rest of init_revisions_and_shortrevisions() " Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 15/20] rebase -i: rewrite write_basic_state() " Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 16/20] rebase -i: rewrite init_basic_state() " Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 17/20] rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 18/20] rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 19/20] rebase -i: remove git-rebase--interactive.sh Alban Gruin
2018-08-28 12:10 ` [GSoC][PATCH v7 20/20] rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 00/20] rebase -i: rewrite in C Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 01/20] sequencer: make three functions and an enum from sequencer.c public Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 02/20] rebase -i: rewrite append_todo_help() in C Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 03/20] editor: add a function to launch the sequence editor Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 04/20] rebase -i: rewrite the edit-todo functionality in C Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 05/20] sequencer: add a new function to silence a command, except if it fails Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 06/20] rebase -i: rewrite setup_reflog_action() in C Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 07/20] rebase -i: rewrite checkout_onto() " Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 08/20] sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin
2018-09-27 21:55 ` [GSoC][PATCH v8 09/20] sequencer: change the way skip_unnecessary_picks() returns its result Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 10/20] t3404: todo list with commented-out commands only aborts Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 11/20] rebase -i: rewrite complete_action() in C Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 12/20] rebase -i: remove unused modes and functions Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 13/20] rebase -i: implement the logic to initialize $revisions in C Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 14/20] rebase -i: rewrite the rest of init_revisions_and_shortrevisions() " Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 15/20] rebase -i: rewrite write_basic_state() " Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 16/20] rebase -i: rewrite init_basic_state() " Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 17/20] rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 18/20] rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 19/20] rebase -i: remove git-rebase--interactive.sh Alban Gruin
2018-09-27 21:56 ` [GSoC][PATCH v8 20/20] rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin
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=c7c20d70-3ad0-4298-66fd-a10e5bb4a91d@gmail.com \
--to=alban.gruin@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=phillip.wood@dunelm.org.uk \
--cc=predatoramigo@gmail.com \
--cc=sbeller@google.com \
/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).