Phillip Wood <[email protected]> writes:
>> I wonder if it makes it easier to read, understand and maintain if
>> there were a local variable that gets opts->current_fixup_count+2 at
>> the beginning of the function, make these three places refer to that
>> variable, and move the increment of opts->current_fixup_count down
>> in the function, after the "if we are squashing, do this, if we are
>> fixing up, do that, otherwise, we do not know what we are doing"
>> cascade. And use the more common post-increment, as we no longer
>> depend on the returned value while at it.
>>
>> IOW, something like this (untested), on top of yours.
>
> I think you'd need to change commit_staged_changes() as well as it
> relies on the current_fixup_count counting the number of fixups, not the
> number of fixups plus two.
I suspect you misread what I wrote (see below for the patch).
The fixup_count is a new local variable in update_squash_messages()
that holds N+2; in other words, I am not suggesting to change what
opts->current_fixup_count means.
> Having said that using 'current_fixup_count +
> 2' to create the labels and incrementing the count at the end of
> update_squash_messages() would probably be clearer than my version. I'm
> about to go away so it'll probably be the second week of September
> before I can re-roll this, will that be too late for getting it into 2.19?
I actually do not mind to go with what you originally sent, unless a
cleaned up version is vastly more readable. After all, a clean-up
can be done separately and safely.
Thanks.
>> sequencer.c | 10 ++++++----
>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/sequencer.c b/sequencer.c
>> index 77d3c2346f..f82c283a89 100644
>> --- a/sequencer.c
>> +++ b/sequencer.c
>> @@ -1331,8 +1331,9 @@ static int update_squash_messages(enum todo_command
>> command,
>> struct strbuf buf = STRBUF_INIT;
>> int res;
>> const char *message, *body;
>> + int fixup_count = opts->current_fixup_count + 2;
>>
>> - if (opts->current_fixup_count > 0) {
>> + if (fixup_count > 2) {
>> struct strbuf header = STRBUF_INIT;
>> char *eol;
>>
>> @@ -1345,7 +1346,7 @@ static int update_squash_messages(enum todo_command
>> command,
>>
>> strbuf_addf(&header, "%c ", comment_line_char);
>> strbuf_addf(&header, _("This is a combination of %d commits."),
>> - opts->current_fixup_count + 2);
>> + fixup_count);
>> strbuf_splice(&buf, 0, eol - buf.buf, header.buf, header.len);
>> strbuf_release(&header);
>> } else {
>> @@ -1387,18 +1388,19 @@ static int update_squash_messages(enum todo_command
>> command,
>> unlink(rebase_path_fixup_msg());
>> strbuf_addf(&buf, "\n%c ", comment_line_char);
>> strbuf_addf(&buf, _("This is the commit message #%d:"),
>> - ++opts->current_fixup_count + 1);
>> + fixup_count);
>> strbuf_addstr(&buf, "\n\n");
>> strbuf_addstr(&buf, body);
>> } else if (command == TODO_FIXUP) {
>> strbuf_addf(&buf, "\n%c ", comment_line_char);
>> strbuf_addf(&buf, _("The commit message #%d will be skipped:"),
>> - ++opts->current_fixup_count + 1);
>> + fixup_count);
>> strbuf_addstr(&buf, "\n\n");
>> strbuf_add_commented_lines(&buf, body, strlen(body));
>> } else
>> return error(_("unknown command: %d"), command);
>> unuse_commit_buffer(commit, message);
>> + opts->current_fixup_count++;
>>
>> res = write_message(buf.buf, buf.len, rebase_path_squash_msg(), 0);
>> strbuf_release(&buf);
>>
>>