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

Re: git annotate with date option not working?

From
Jeff King <peff@peff.net>
Date
Jun 1, 2011, 16:49 UTC
Message-ID
<20110601164904.GD7132@sigill.intra.peff.net>
In-Reply-To
<20110601161638.GB7132@sigill.intra.peff.net>
On Wed, Jun 01, 2011 at 12:16:38PM -0400, Jeff King wrote:
Show 25 quoted lines
> On Wed, Jun 01, 2011 at 10:20:37AM +0200, Chengwei Ding wrote:
> 
> > can anyone confirm that this "--date" option is working for git
> > annotate cmd.
> 
> This is by design:
> 
>   $ git show 31653c1abc1ac80206db9efca56ff1969150d8fe
>   Author: Eugene Letuchy <eugene@facebook.com>
>   Date:   Fri Feb 20 14:51:11 2009 -0800
>   [...]
>       git annotate ignores the date format specifiers and continues to
>       uses the ISO format, as before.
>   [...]
>   +       if (cmd_is_annotate) {
>                   output_option |= OUTPUT_ANNOTATE_COMPAT;
>   +               blame_date_mode = DATE_ISO8601;
>   +       } else {
>   +               blame_date_mode = revs.date_mode;
>   +       }
> 
> The annotate command is a historical artifact, and will remain frozen in
> time in terms of output format and features. If you want to use newer
> features, use "git blame". If you really need the annotate output format
> with newer blame features, use "git blame -c".

Having said that, this would be really easy to support, and I don't think would have any negative compatibility consequences, as long as we don't support blame.date. But I don't think we're breaking anybody relying on "git annotate --date=whatever" being silently ignored, as that option has never done anything useful.

The patch would look like this:
diff --git a/builtin/blame.c b/builtin/blame.c
index 26a5d42..274a98d 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2333,7 +2333,10 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 
 	git_config(git_blame_config, NULL);
 	init_revisions(&revs, NULL);
-	revs.date_mode = blame_date_mode;
+	if (cmd_is_annotate)
+		revs.date_mode = DATE_ISO8601;
+	else
+		revs.date_mode = blame_date_mode;
 	DIFF_OPT_SET(&revs.diffopt, ALLOW_TEXTCONV);
 
 	save_commit_buffer = 0;
@@ -2368,13 +2371,10 @@ parse_done:
 	if (revs_file && read_ancestry(revs_file))
 		die_errno("reading graft file '%s' failed", revs_file);
 
-	if (cmd_is_annotate) {
+	if (cmd_is_annotate)
 		output_option |= OUTPUT_ANNOTATE_COMPAT;
-		blame_date_mode = DATE_ISO8601;
-	} else {
-		blame_date_mode = revs.date_mode;
-	}
 
+	blame_date_mode = revs.date_mode;
 	/* The maximum width used to show the dates */
 	switch (blame_date_mode) {
 	case DATE_RFC2822:
Previous: Chengwei DingNext: Jonathan Nieder
Message 8 of 9 in “git annotate with date option not working?”
  1. Chengwei DingJun 1, 2011
  2. Jakub NarebskiJun 1, 2011
  3. Chengwei DingJun 1, 2011
  4. Arnaud LacurieJun 1, 2011
  5. Chengwei DingJun 1, 2011
  6. Jeff KingJun 1, 2011
  7. Chengwei DingJun 1, 2011
  8. Jeff KingJun 1, 2011
  9. Jonathan NiederJun 1, 2011

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.