From: Junio C Hamano <gitster@pobox.com>
To: Charvi Mendiratta <charvi077@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
phillip.wood123@gmail.com,
Christian Couder <chriscool@tuxfamily.org>,
Phillip Wood <phillip.wood@dunelm.org.uk>
Subject: Re: [PATCH v2 2/6] commit: add amend suboption to --fixup to create amend! commit
Date: Thu, 25 Feb 2021 13:00:34 -0800 [thread overview]
Message-ID: <xmqqwnuvsw0d.fsf@gitster.g> (raw)
In-Reply-To: 20210225100855.25530-3-charvi077@gmail.com
Charvi Mendiratta <charvi077@gmail.com> writes:
> `git commit --fixup=amend:<commit>` will create an "amend!" commit.
> The resulting commit message subject will be "amend! ..." where
> "..." is the subject line of <commit> and the initial message
> body will be <commit>'s message. -m can be used to override the
> message body.
>
> The "amend!" commit when rebased with --autosquash will fixup the
> contents and replace the commit message of <commit> with the
> "amend!" commit's message body.
>
> Inorder to prevent rebase from creating commits with an empty
In order to prevent ...
> message we refuse to create an "amend!" commit if commit message
> body is empty.
> ...
> +static int prepare_amend_commit(struct commit *commit, struct strbuf *sb,
> + struct pretty_print_context *ctx) {
Don't indent the second line unnecessarily too deep.
> + /*
> + * If we amend the 'amend!' commit then we don't want to
> + * duplicate the subject line.
> + */
> + const char *format = NULL;
> + if (starts_with(sb->buf, "amend! amend!"))
> + format = "%b";
> + else
> + format = "%B";
I am not sure how well this strategy of special case only two amend!
scales. What would happen when we --fixup another "fixup!"commit?
Shouldn't the caller, when it called format_commit_message() to
prepare sb it passed to us, have stripped out existing prefix, if
any, so that we can always use the same %B format, or something like
that?
> ...
> + format_commit_message(commit, fmt, &sb, &ctx);
> + free(fmt);
> hook_arg1 = "message";
> +
> + if ((have_option_m) && !strcmp(fixup_prefix,"fixup"))
Unnecessary () around have_option_m, and missing SP after ",".
> + strbuf_addbuf(&sb, &message);
> +
> + if (!strcmp(fixup_prefix,"amend")) {
Missing SP after "," (I won't repeat---please re-check the whole
patch series before rerolling).
> + if (have_option_m)
> + die(_("cannot combine -m with --fixup:%s"), fixup_message);
> + else
> + prepare_amend_commit(commit, &sb, &ctx);
Hmph, why is -m so special? Should we allow --fixup=amend:<cmd>
with -F (or -c/-C for that matter), or are these other options
caught at a lot higher layer already and we do not have to check
them here?
> if (also + only + all + interactive > 1)
> die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
> +
> + if (fixup_message) {
> + /*
> + * As `amend` suboption contains only alpha
> + * character. So check if first non alpha
> + * character in fixup_message is ':'.
> + */
> + size_t len = get_alpha_len(fixup_message);
> + if (len && fixup_message[len] == ':') {
> + fixup_message[len] = '\0';
> + fixup_commit = fixup_message + ++len;
It would be easier to follow to write it this way, no?
fixup_message[len++] = '\0';
fixup_commit = fixup_message + len;
> + if (starts_with("amend", fixup_message))
> + fixup_prefix = "amend";
> + else
> + die(_("unknown option: --fixup=%s:%s"), fixup_message, fixup_commit);
> + } else {
> + fixup_commit = fixup_message;
> + fixup_prefix = "fixup";
> + use_editor = 0;
> + }
> + }
next prev parent reply other threads:[~2021-02-25 21:05 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-17 7:29 [PATCH 0/6][Outreachy] commit: Implementation of "amend!" commit Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 1/6] sequencer: export subject_length() Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 2/6] commit: add amend suboption to --fixup to create amend! commit Charvi Mendiratta
2021-02-17 19:49 ` Junio C Hamano
2021-02-18 10:13 ` Charvi Mendiratta
2021-02-18 19:18 ` Junio C Hamano
2021-02-18 20:37 ` Junio C Hamano
2021-02-19 6:10 ` Charvi Mendiratta
2021-02-19 6:09 ` Charvi Mendiratta
2021-02-20 3:15 ` Junio C Hamano
2021-02-21 6:35 ` Charvi Mendiratta
2021-02-21 7:05 ` Junio C Hamano
2021-02-21 9:20 ` Charvi Mendiratta
2021-02-22 17:35 ` Junio C Hamano
2021-02-23 6:05 ` Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 3/6] commit: add a reword suboption to --fixup Charvi Mendiratta
2021-02-17 19:56 ` Junio C Hamano
2021-02-18 10:14 ` Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 4/6] t7500: add tests for --fixup[amend|reword] options Charvi Mendiratta
2021-02-17 19:59 ` Junio C Hamano
2021-02-18 10:15 ` Charvi Mendiratta
2021-02-18 19:26 ` Junio C Hamano
2021-02-19 6:10 ` Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 5/6] t3437: use --fixup with options to create amend! commit Charvi Mendiratta
2021-02-17 7:37 ` [PATCH 6/6] doc/git-commit: add documentation for fixup[amend|reword] options Charvi Mendiratta
2021-02-18 19:23 ` Junio C Hamano
2021-02-19 6:09 ` Charvi Mendiratta
2021-02-23 19:55 ` [PATCH 0/6][Outreachy] commit: Implementation of "amend!" commit Junio C Hamano
2021-02-24 5:54 ` Charvi Mendiratta
2021-02-25 10:08 ` [PATCH v2 " Charvi Mendiratta
2021-02-25 10:08 ` [PATCH v2 1/6] sequencer: export subject_length() Charvi Mendiratta
2021-02-25 10:08 ` [PATCH v2 2/6] commit: add amend suboption to --fixup to create amend! commit Charvi Mendiratta
2021-02-25 21:00 ` Junio C Hamano [this message]
2021-02-26 10:38 ` Charvi Mendiratta
2021-02-26 19:32 ` Junio C Hamano
2021-02-27 4:56 ` Charvi Mendiratta
2021-02-25 10:08 ` [PATCH v2 3/6] commit: add a reword suboption to --fixup Charvi Mendiratta
2021-02-25 20:32 ` Junio C Hamano
2021-02-26 10:35 ` Charvi Mendiratta
2021-02-25 10:09 ` [PATCH v2 4/6] t7500: add tests for --fixup=[amend|reword] options Charvi Mendiratta
2021-02-25 10:09 ` [PATCH v2 5/6] t3437: use --fixup with options to create amend! commit Charvi Mendiratta
2021-02-25 10:09 ` [PATCH v2 6/6] doc/git-commit: add documentation for fixup=[amend|reword] options Charvi Mendiratta
2021-02-25 20:48 ` Junio C Hamano
2021-02-26 10:36 ` Charvi Mendiratta
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=xmqqwnuvsw0d.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=charvi077@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood123@gmail.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.
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.