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

Re: [PATCH 2/6] commit: add amend suboption to --fixup to create amend! commit

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 20, 2021, 03:15 UTC
Message-ID
<xmqq4ki7bf9y.fsf@gitster.g>
In-Reply-To
<CAPSFM5eJNUdzy0CA1GNjNkqL_a7ivM8qydxvHf3208nznkG9KQ@mail.gmail.com>
Charvi Mendiratta <charvi077@gmail.com> writes:
> For end-users "-m" or "-F" will make it easier to prepare an "amend!"
> commit. Because using the "-m" reduces the cost of opening an editor
> to prepare "amend!" commit and it can be done with command line only.

Hmph. That is not very convicing to me. The user is motivated enough to fix a wrong commit log message and replace it with an improved one by using the "--fixup:amend" feature---why would that improved message can sufficiently be written with just an "-m message", which by definition would be much less capable of preparing a well-thought-out message than with an editor?

Yes, with "-m", you can add some short string easily at the end of the existing commit message without opening an editor. But I am trying to see why it is a good thing to be able to do so in the first place. It is very easy to make typoes while doing so and it would be hard to fix these typoes, exactly because you are doing so without being in an editor. And the whole point of --fixup=amend is about improving the message (as opposed to --fixup that is to record the contents that have already been improved in the index).

This is why I kept asking what the use case would look like. I am trying to find out if you have a good end-user story in mind that we can use in the documentation to sell the feature to end-users, but I am not seeing one.

Is the combination of "--fixup=amend" and "-m <msg>" meant to be used primarily "to leave a note to myself" when the user runs --fixup=amend:<commit>, to just record the points to be elaborated when the message is written for real much later? E.g.

    ... hack hack hack ...
    ... good stopping point, but cannot afford time to write
    ... a good log message now
    $ git commit --fixup=amend:HEAD~2 -m 'talk about X, Y and Z' -a
    ... hack hack hack ...
    ... possibly doing something entirely different ...
    ... finally comes back to finish cleaning up the branch for real ...
    $ git rebase --autosquash -i origin

And one of the insn created in the todo sheet would be amend!, whose commit message has the message taken from the original HEAD~2 PLUS the reminder to the user that s/he needs to talk about X, Y and Z? And the user at that point writes more comprehensive message about these three things?

That is a made-up example of what "appending some short strings possibly full of typoes without having to open an editor" could be useful for. I am not sure if it is truly useful, or if it is just a hand wavy excuse not to mark -m/-F incompatible with --fixup=amend without a real merit [*].

    Side note: one reason why I do not find it realistic is that it
    is unlikely that the user would use --fixup=amend to slurp in
    the original log message when recording "good stopping point,
    but cannot afford time" fixup.  "--squash HEAD~2 -m <msg>" would
    be much faster to record the "note to myself" reminder, and when
    the user finally comes back to clean things up, the amount of
    work to edit the original's message while looking at the "note
    to myself" appended at the end would not be any different in
    either workflow.

In any case, that was the kind of answer(s) I was looking for when I asked "what is this good for?" question.

Thanks.
Previous: Charvi MendirattaNext: Charvi Mendiratta
Message 10 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.