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

Re: Keep original author with git merge --squash?

From
David Glasser <glasser@davidglasser.net>
Date
Feb 13, 2015, 00:21 UTC
Message-ID
<CAN7QDoKODKwSzWn-Py7zEzbELe4JjoSSjQ7riBRYLcXU-0TLXg@mail.gmail.com>
In-Reply-To
<CAN7QDoK8ePJW-pM=m0+WpEsiYb_aUdt_YUm3gyBhctY_nWBshA@mail.gmail.com>
On Thu, Feb 12, 2015 at 4:17 PM, David Glasser <glasser@davidglasser.net> wrote:
Show 46 quoted lines
> On Thu, Feb 12, 2015 at 2:34 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> David Glasser <glasser@davidglasser.net> writes:
>>
>>> So to be concrete: What I'm proposing (and I'm excited to implement
>>> it!) is the following:
>>>
>>> When running "git commit" and:
>>> - You've fallen into the case where the message was read from SQUASH_MSG
>>> - You haven't used another method of specifying the author (--author,
>>>   -C, -c, --amend)
>>> - You have not specified --reset-author
>>> - You have set the "commit.useSquashAuthor" option
>>> - Before invoking prepare-commit-msg, all of the `Author:` lines found
>>>   in SQUASH_MSG have the same value
>>>
>>> then that author is used, as if it were specified with --author.  (And
>>> this will show up, commented-out, at the bottom of COMMIT_EDITMSG.)
>>
>>
>> I actually was hoping that this would extend to cases other than
>> "git merge --squash".
>>
>> When running "git commit" and:
>>
>>  - You didn't use a more explicit method of specifying the
>>    authorship identity (--author, --date, -C, -c --amend,
>>    --reset-author options, or environment variables GIT_AUTHOR_*);
>>
>>  - You have commit.useAuthorFromEditorComment variable;
>>
>>  - You have "# Author: " line that are identical in the result of
>>    the editor,
>>
>> then use that author.  That would allow "git commit --amend" to
>> update a misspelled author name, for example.
>>
>> Is that a bit too liberal?  Would it invite mistakes?
>
> That does sound pretty good.  And for the specific case of squash,
> what I would do would be (a) take one of the existing "Author: " lines
> and turn it into an "# Author:" line and (b) do the ordinary editing
> that I do to combine the existing messages?
>
> (Maybe my proposed "detect that they're all the same" code would run
> at `merge --squash` time, producing a trailing "# Author:" line if all
> of the produced "Author: " lines were identical?)

Or, well, as Peff suggested, maybe SQUASH_MSG should look exactly like the message that rebase's squash gives you, which in fact is a lot better: no random indent, "# Author", etc. So making your suggested change to parse "# Author" in `git commit`, plus a second change to make SQUASH_MSG look like rebase's squash, would achieve my goals.

-- 
glasser@davidglasser.net | langtonlabs.org | flickr.com/photos/glasser/
Previous: David Glasser
Message 18 of 18 in “Keep original author with git merge --squash?”
  1. David GlasserFeb 11, 2015
  2. Jeff KingFeb 12, 2015
  3. Michael HaggertyFeb 12, 2015
  4. Jeff KingFeb 12, 2015
  5. David GlasserFeb 12, 2015
  6. Junio C HamanoFeb 12, 2015
  7. David GlasserFeb 12, 2015
  8. Junio C HamanoFeb 12, 2015
  9. David GlasserFeb 12, 2015
  10. David GlasserFeb 12, 2015
  11. Junio C HamanoFeb 12, 2015
  12. Jeff KingFeb 12, 2015
  13. Junio C HamanoFeb 12, 2015
  14. Jeff KingFeb 13, 2015
  15. Junio C HamanoFeb 13, 2015
  16. Jeff KingFeb 13, 2015
  17. David GlasserFeb 13, 2015
  18. David GlasserFeb 13, 2015

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.