threads / bug / 42030

[Bug?] "git commit --amend" always gives author-date to summary?

Subject: [Bug?] "git commit --amend" always gives author-date to summary?

## tl;dr

3 messages between Apr 14, 2016 and Apr 15, 2016.

replies: 2people: 2as markdown or json

Junio C Hamano· Apr 14, 2016, 21:07 UTC · lore
A simple reproduction.  Doing one of these
    $ git commit --amend --no-edit
    $ echo >MSG frotz; git commit --amend -F MSG

on any commit, whether it is your own commit or somebody else's, seems to always show the "Date:" of the original commit, e.g.

    $ git checkout v2.8.0^0
    $ git commit --amend --no-edit
    [detached HEAD a6f2a14] Git 2.8
     Date: Mon Mar 28 12:19:45 2016 -0700
     3 files changed, 14 insertions(+), 9 deletions(-)
    $ git checkout v2.8.0^^2
    $ git commit --amend --no-edit
    [detached HEAD df9f57e] Documentation: fix git-p4 AsciiDoc formatting
     Author: Lars Schneider <larsxschneider@gmail.com>
     Date: Wed Mar 23 11:59:01 2016 +0100
     1 file changed, 3 insertions(+), 5 deletions(-)

I can understand the latter, but I am not sure if it makes sense to do the former. The output is coming from b7242b8c (commit: print "Date" line when the user has set date, 2014-05-01), whose objective I can agree with, but does not seem to match the use case.

    commit: print "Date" line when the user has set date
    
    When we make a commit and the author is not the same as the
    committer (e.g., because you used "-c $commit" or
    "--author=$somebody"), we print the author's name and email
    in both the commit-message template and as part of the
    commit summary. This is a safety check to give the user a
    chance to confirm that we are doing what they expect.
    
    This patch brings the same safety for the "date" field,
    which may be set by "-c" or by using "--date".  Note that we
    explicitly do not set it for $GIT_AUTHOR_DATE, as it is
    probably not of interest when "git commit" is being fed its
    parameters by a script.

When doing "--amend", not updating the author-date is the norm. Also, I think the output is meant to accompany with the reminder to say "You are committing somebody else's change", but in the first case of amending v2.8.0^0, "the author is not the same as the committer" does not apply, either.

The commit in question, b7242b8c, brings in a test for amend to
7501, like this:
 
    test_expect_success 'commit mentions forced date in output' '
            git commit --amend --date=2010-01-02T03:04:05 >output &&
            grep "Date: *Sat Jan 2 03:04:05 2010" output
    '
But if I change it like this:
    test_expect_success 'amend always mentions date in output' '
            git commit --amend >output &&
            grep "Date: " output
    '
the test still passes.

I suspect that there are people who are already depending on this behaviour, so it may not be worth fixing, but I found it somewhat irritating (especially after wasting about an hour or so doing wild goose chase trying to find a stray invocation of "date" somewhere in my script that eventually uses "git commit --amend").

Thoughts?
Jeff King· Apr 15, 2016, 02:03 UTC · re: Junio C Hamano · lore

Re: [Bug?] "git commit --amend" always gives author-date to summary?

On Thu, Apr 14, 2016 at 02:07:50PM -0700, Junio C Hamano wrote:
Show 24 quoted lines
> A simple reproduction.  Doing one of these
> 
>     $ git commit --amend --no-edit
>     $ echo >MSG frotz; git commit --amend -F MSG
> 
> on any commit, whether it is your own commit or somebody else's,
> seems to always show the "Date:" of the original commit, e.g.
> 
>     $ git checkout v2.8.0^0
>     $ git commit --amend --no-edit
>     [detached HEAD a6f2a14] Git 2.8
>      Date: Mon Mar 28 12:19:45 2016 -0700
>      3 files changed, 14 insertions(+), 9 deletions(-)
>     $ git checkout v2.8.0^^2
>     $ git commit --amend --no-edit
>     [detached HEAD df9f57e] Documentation: fix git-p4 AsciiDoc formatting
>      Author: Lars Schneider <larsxschneider@gmail.com>
>      Date: Wed Mar 23 11:59:01 2016 +0100
>      1 file changed, 3 insertions(+), 5 deletions(-)
> 
> I can understand the latter, but I am not sure if it makes sense to
> do the former.  The output is coming from b7242b8c (commit: print
> "Date" line when the user has set date, 2014-05-01), whose objective
> I can agree with, but does not seem to match the use case.

That's working as I intended it in both cases. The point is to show extra information whenever we have picked an ident or date that is not the "normal" one. As you noted later, leaving the old author date is the normal thing for "--amend", but it's still different from a normal commit that uses the current user and the current date. So I guess it depends on how you define normal.

IMHO, we are better off generally erring on the side of printing extra information. The command is already quite chatty, and we are more likely to remind somebody that they wanted "--reset-author" than to bother thing.

Show 8 quoted lines
> [...]
> I suspect that there are people who are already depending on this
> behaviour, so it may not be worth fixing, but I found it somewhat
> irritating (especially after wasting about an hour or so doing wild
> goose chase trying to find a stray invocation of "date" somewhere in
> my script that eventually uses "git commit --amend").
> 
> Thoughts?

So I don't agree that is a "fix" to change it. But if it bothers you, I don't mind a knob to suppress it in certain cases.

-Peff
Junio C Hamano· Apr 15, 2016, 02:13 UTC · re: Jeff King · lore

Re: [Bug?] "git commit --amend" always gives author-date to summary?

Jeff King <peff@peff.net> writes:
> That's working as I intended it in both cases. The point is to show
> extra information whenever we have picked an ident or date that is not
> the "normal" one.
OK.

← back to recent threads