Re: How to implement the "amend!" commit ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx/
[3] https://lore.kernel.org/git/95cc6fb2-d1bc-11de-febe-c2b5c78a6850@xxxxxxxxx/





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux