git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Charvi Mendiratta <charvi077@gmail.com>, git <git@vger.kernel.org>
Cc: Christian Couder <christian.couder@gmail.com>,
	Phillip Wood <phillip.wood@dunelm.org.uk>,
	Taylor Blau <me@ttaylorr.com>
Subject: Re: How to implement the "amend!" commit ?
Date: Thu, 14 Jan 2021 10:39:50 +0000	[thread overview]
Message-ID: <99b40665-45dd-6c4d-d46a-56c7dbf89568@gmail.com> (raw)
In-Reply-To: <CAPSFM5f+cm87N5TO3V+rJvWyrcazybNb_Zu_bJZ+sBH4N4iyow@mail.gmail.com>

I've taken the liberty of adding some comments about the backwards 
compatibility of each option

On 13/01/2021 01:15, Charvi Mendiratta wrote:
> Hi Everyone,
> 
> Implementing "amend!" commit would be an alternative to the
> fixup!/squash! commit that addresses the issue as opened here[1]. Also
> the related patches[2], adds the options to `fixup` command in
> interactive rebase and supports the "amend!" commit upon
> `--autosquash`. Next, after discussing with Phillip and Christian,
> there could be 3 possibilities to implement the "amend!" commit (UI):
> 
> Firstly, the `--fixup=<commit>` to have option like,
> `--fixup=reword/amend:<commit>`
> 
> So, `git commit --fixup` can have 3 options:
> 
> a) `--fixup=<commit>`, work as of now, make fixup! commit.
> b) `--fixup=amend:<commit>`, make "amend!" commit, takes changes and
> also opens the editor for a new message (Here it adds a new message to
> amend! commit's message body and upon autosquash it will fixup up the
> content and reword the original commit message i.e replaces the
> original commit message with the "amend!" commit's message).
> c) `--fixup=reword:<commit>`, makes (empty) "amend!" commit, do not
> take changes and open the editor for a new message(Here, upon
> autosquash it will just reword the original commit message).

This is the only option that is backwards compatible. `--fixup=:/<text> 
` still works and can be used with the new syntax as 
`--fixup=amend::/<text>`. Note that we intend to allow accept any prefix 
of "amend" and "reword" so --fixup=a:<commit> would work.

> Secondly,
> As an alternative to above, we can use `--fixup=<commit> --amend` and
> `--fixup=<commit> --reword`.

This is not backwards compatible. At the moment If you create a fixup 
with `git commit --fixup=aaa` and then realize it should refer to commit 
bbb instead you can fix it with `git commit --amend --fixup=bbb`. That 
would no longer be possible. (You could still do `git commit --amend 
-m'fixup! bbb'` which works with `git rebase --autosquash` but is not 
very helpful when running `git log` or `git commit --amend -m"$(git log 
-1 --format=%s bbb)" which is a pain to type.)

> Next,
> To use only, `--fixup=<commit> --edit` to make the "amend!" commit.

This is not backwards compatible. At the moment this combination of 
options allows the user to add some comments to the fixup commit 
message. To do that in the future they'd have to change the subject line 
when editing the message.

Best Wishes

Phillip

> Also as discussed earlier[3] we are avoiding the use of additional
> options like `git commit --amend=<commit>` inorder to avoid confusion
> of doing similar things in different ways. So, I wonder which could be
> the best way to proceed with or if any other way to implement "amend!"
> commit ?
> 
> Thanks and Regards,
> Charvi
> 
> [1] https://github.com/gitgitgadget/git/issues/259
> [2] https://lore.kernel.org/git/20210108092345.2178-1-charvi077@gmail.com/
> [3] https://lore.kernel.org/git/95cc6fb2-d1bc-11de-febe-c2b5c78a6850@gmail.com/
> 


  parent reply	other threads:[~2021-01-14 10:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAPSFM5c2iqBn8_Dih2id7q6RRp0q=vfCSVUHDE5AOXZ8z3Ko9w@mail.gmail.com>
2021-01-13  1:15 ` How to implement the "amend!" commit ? Charvi Mendiratta
2021-01-13 18:24   ` Taylor Blau
2021-01-13 18:27     ` Taylor Blau
2021-01-14  8:06     ` Charvi Mendiratta
2021-01-14 10:39   ` Phillip Wood [this message]
2021-01-14 17:32     ` Taylor Blau
2021-01-15 10:42       ` Phillip Wood
2021-01-15 18:05         ` Martin Ågren
2021-01-14 20:32     ` Junio C Hamano
2021-01-15 10:29       ` Phillip Wood
2021-01-15 17:23         ` Junio C Hamano
2021-01-17  3:43       ` Charvi Mendiratta
2021-01-17  4:33         ` Junio C Hamano
2021-01-17  7:46           ` Charvi Mendiratta
2021-01-15  8:37     ` 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

  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=99b40665-45dd-6c4d-d46a-56c7dbf89568@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=charvi077@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.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).