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

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

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 14, 2016, 21:07 UTC
Message-ID
<xmqqh9f3gaqh.fsf@gitster.mtv.corp.google.com>
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?
Next: Jeff King
Message 1 of 3 in “[Bug?] "git commit --amend" always gives author-date to summary?”
  1. Junio C HamanoApr 14, 2016
  2. Jeff KingApr 15, 2016
  3. Junio C HamanoApr 15, 2016

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.