Re: git annotate with date option not working?
From: Jeff King <hidden>
Date: 2016-06-15 22:51:21
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Wed, Jun 01, 2011 at 12:16:38PM -0400, Jeff King wrote:
On Wed, Jun 01, 2011 at 10:20:37AM +0200, Chengwei Ding wrote:quoted
can anyone confirm that this "--date" option is working for git annotate cmd.This is by design: $ git show 31653c1abc1ac80206db9efca56ff1969150d8fe Author: Eugene Letuchy [off-list ref] 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: