git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/6][Outreachy] commit: Implementation of "amend!" commit

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 23, 2021, 19:55 UTC
Message-ID
<xmqqeeh61rv9.fsf@gitster.g>
In-Reply-To
<20210217072904.16257-1-charvi077@gmail.com>
Charvi Mendiratta <charvi077@gmail.com> writes:
Show 14 quoted lines
> This patch series teaches `git commit --fixup` to create "amend!" commit
> as an alternative that works with `git rebase --autosquash`. It allows to
> fixup both the content and the commit message of the specified commit.
> Here we add two suboptions to the `--fixup`, first `amend` suboption that
> creates an "amend!" commit. It takes the staged changes and also allows to
> edit the commit message of the commit we are fixing.
> Example usuage:
> git commit --fixup=amend:<commit>
>
> Secondly, `reword` suboption that creates an empty "amend!" commit i.e it
> ignores the staged changes and only allows to reword/edit the commit message
> of the commit we are fixing.
> Example usuage:
> git commit --fixup=reword:<commit>

We used to have only --fixup that was meant to squeeze in minor corrections to the contents recorded, and it kept the log message of the original commit intact.

Now we have two other ways, --fixup=reword that is meant to correct only the log message while keeping the contents intact from the original, and --fixup=amend that is meant to allow users to do both. They are nice additions to our toolbox.

While trying to use the --fixup=amend myself to "touch up" somebody else's work today, another thing that we did not discuss so far came to my mind (sorry, if this was discussed and resolved in your previous discussions with other reviewers). What should we do to the authorship?

For the original --fixup, it is reasonably obvious that the original authorship should be kept, as the intended use case is to make a small tweak that does not change the intention of the commit in any way (and that is why the log message from the original is kept), and with --fixup=reword, it would probably be the same (the contents were written by the original author alone, and the person fixing-up is not changing only the log message). So these two have a reasonably good default model for the authorship information for the final outcome: the original authorship should be kept (of course, the user can easily take over the authorship later with "git commit --amend --reset-author" perhaps run as part of "rebase -i", if the contribution is significant enough to deserve the transfer of the authorship).

But I am not sure what the default behaviour for the authorship when --fixup=amend:<commit> is used to update somebody else's commit. I think it is OK to leave it to whatever the code happens to do right now (simply because I have no strong reason to vote for either way between keeping the original and letting the amending user take it over), but I think it should be documented what happens in each case.

Thanks.
Previous: Charvi MendirattaNext: Charvi Mendiratta
Message 28 of 44 in “[Outreachy] commit: Implementation of "amend!" commit”
  1. 0/6 [Outreachy] commit: Implementation of "amend!" commitCharvi Mendiratta, Feb 17, 2021
  2. 1/6 sequencer: export subject_length()Charvi Mendiratta, Feb 17, 2021
  3. 2/6 commit: add amend suboption to --fixup to create amend! commitCharvi Mendiratta, Feb 17, 2021
  4. Junio C HamanoFeb 17, 2021
  5. Charvi MendirattaFeb 18, 2021
  6. Junio C HamanoFeb 18, 2021
  7. Junio C HamanoFeb 18, 2021
  8. Charvi MendirattaFeb 19, 2021
  9. Charvi MendirattaFeb 19, 2021
  10. Junio C HamanoFeb 20, 2021
  11. Charvi MendirattaFeb 21, 2021
  12. Junio C HamanoFeb 21, 2021
  13. Charvi MendirattaFeb 21, 2021
  14. Junio C HamanoFeb 22, 2021
  15. Charvi MendirattaFeb 23, 2021
  16. 3/6 commit: add a reword suboption to --fixupCharvi Mendiratta, Feb 17, 2021
  17. Junio C HamanoFeb 17, 2021
  18. Charvi MendirattaFeb 18, 2021
  19. 4/6 t7500: add tests for --fixup[amend|reword] optionsCharvi Mendiratta, Feb 17, 2021
  20. Junio C HamanoFeb 17, 2021
  21. Charvi MendirattaFeb 18, 2021
  22. Junio C HamanoFeb 18, 2021
  23. Charvi MendirattaFeb 19, 2021
  24. 5/6 t3437: use --fixup with options to create amend! commitCharvi Mendiratta, Feb 17, 2021
  25. 6/6 doc/git-commit: add documentation for fixup[amend|reword] optionsCharvi Mendiratta, Feb 17, 2021
  26. Junio C HamanoFeb 18, 2021
  27. Charvi MendirattaFeb 19, 2021
  28. Junio C HamanoFeb 23, 2021
  29. Charvi MendirattaFeb 24, 2021
  30. 0/6 [Outreachy] commit: Implementation of "amend!" commitCharvi Mendiratta, Feb 25, 2021
  31. 1/6 sequencer: export subject_length()Charvi Mendiratta, Feb 25, 2021
  32. 2/6 commit: add amend suboption to --fixup to create amend! commitCharvi Mendiratta, Feb 25, 2021
  33. Junio C HamanoFeb 25, 2021
  34. Charvi MendirattaFeb 26, 2021
  35. Junio C HamanoFeb 26, 2021
  36. Charvi MendirattaFeb 27, 2021
  37. 3/6 commit: add a reword suboption to --fixupCharvi Mendiratta, Feb 25, 2021
  38. Junio C HamanoFeb 25, 2021
  39. Charvi MendirattaFeb 26, 2021
  40. 5/6 t3437: use --fixup with options to create amend! commitCharvi Mendiratta, Feb 25, 2021
  41. 4/6 t7500: add tests for --fixup=[amend|reword] optionsCharvi Mendiratta, Feb 25, 2021
  42. 6/6 doc/git-commit: add documentation for fixup=[amend|reword] optionsCharvi Mendiratta, Feb 25, 2021
  43. Junio C HamanoFeb 25, 2021
  44. Charvi MendirattaFeb 26, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.