From: Jeff King <peff-AdEPDUrAXsQ@public.gmane.org>
To: Eli Barzilay <eli-oSK4jVRJLyZg9hUCZPvPmw@public.gmane.org>
Cc: Yann Hodique
<yann.hodique-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Andreas Schwab <schwab-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>,
Junio C Hamano <gitster-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>,
git-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
magit-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: [PATCH 2/4] log: respect date_mode_explicit with --format:%gd
Date: Fri, 4 May 2012 01:25:18 -0400 [thread overview]
Message-ID: <20120504052518.GB16107@sigill.intra.peff.net> (raw)
In-Reply-To: <20120504052106.GA15970-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
When we show a reflog selector (e.g., via "git log -g"), we
perform some DWIM magic: while we normally show the entry's
index (e.g., HEAD@{1}), if the user has given us a date
with "--date", then we show a date-based select (e.g.,
HEAD@{yesterday}).
However, we don't want to trigger this magic if the
alternate date format we got was from the "log.date"
configuration; that is not sufficiently strong context for
us to invoke this particular magic. To fix this, commit
f4ea32f (improve reflog date/number heuristic, 2009-09-24)
introduced a "date_mode_explicit" flag in rev_info. This
flag is set only when we see a "--date" option on the
command line, and we a vanilla date to the reflog code if
the date was not explicit.
Later, commit 8f8f547 (Introduce new pretty formats %g[sdD]
for reflog information, 2009-10-19) added another way to
show selectors, and it did not respect the date_mode_explicit
flag from f4ea32f.
This patch propagates the date_mode_explicit flag to the
pretty-print code, which can then use it to pass the
appropriate date field to the reflog code. This brings the
behavior of "%gd" in line with the other formats, and means
that its output is independent of any user configuration.
Signed-off-by: Jeff King <peff-AdEPDUrAXsQ@public.gmane.org>
---
I'm not happy that users of pretty_print_context have to manually
remember to copy in the date_mode_explicit flag; it would be nice if it
just came with the date_mode field for free. But that would mean
changing the type of date_mode to hold the extra bit, and would disrupt
callers all over the code base.
builtin/rev-list.c | 1 +
commit.h | 1 +
log-tree.c | 1 +
pretty.c | 4 +++-
t/t1411-reflog-show.sh | 2 +-
5 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 4c4d404..ff5a383 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -109,6 +109,7 @@ static void show_commit(struct commit *commit, void *data)
struct pretty_print_context ctx = {0};
ctx.abbrev = revs->abbrev;
ctx.date_mode = revs->date_mode;
+ ctx.date_mode_explicit = revs->date_mode_explicit;
ctx.fmt = revs->commit_format;
pretty_print_commit(&ctx, commit, &buf);
if (revs->graph) {
diff --git a/commit.h b/commit.h
index ccaa20b..d617fa3 100644
--- a/commit.h
+++ b/commit.h
@@ -84,6 +84,7 @@ struct pretty_print_context {
const char *after_subject;
int preserve_subject;
enum date_mode date_mode;
+ unsigned date_mode_explicit:1;
int need_8bit_cte;
int show_notes;
struct reflog_walk_info *reflog_info;
diff --git a/log-tree.c b/log-tree.c
index 34c49e7..634f142 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -652,6 +652,7 @@ void show_log(struct rev_info *opt)
if (ctx.need_8bit_cte >= 0)
ctx.need_8bit_cte = has_non_ascii(opt->add_signoff);
ctx.date_mode = opt->date_mode;
+ ctx.date_mode_explicit = opt->date_mode_explicit;
ctx.abbrev = opt->diffopt.abbrev;
ctx.after_subject = extra_headers;
ctx.preserve_subject = opt->preserve_subject;
diff --git a/pretty.c b/pretty.c
index f2dee30..2bc64b3 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1009,7 +1009,9 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder,
if (c->pretty_ctx->reflog_info)
get_reflog_selector(sb,
c->pretty_ctx->reflog_info,
- c->pretty_ctx->date_mode,
+ c->pretty_ctx->date_mode_explicit ?
+ c->pretty_ctx->date_mode :
+ DATE_NORMAL,
(placeholder[1] == 'd'));
return 2;
case 's': /* reflog message */
diff --git a/t/t1411-reflog-show.sh b/t/t1411-reflog-show.sh
index 4706f4c..88247f8 100755
--- a/t/t1411-reflog-show.sh
+++ b/t/t1411-reflog-show.sh
@@ -121,7 +121,7 @@ test_expect_success 'log.date does not invoke "--date" magic (oneline)' '
cat >expect <<'EOF'
HEAD@{0}
EOF
-test_expect_failure 'log.date does not invoke "--date" magic (format=%gd)' '
+test_expect_success 'log.date does not invoke "--date" magic (format=%gd)' '
test_config log.date raw &&
git log -g -1 --format=%gd >actual &&
test_cmp expect actual
--
1.7.10.1.10.ge534bc3
next prev parent reply other threads:[~2012-05-04 5:25 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-27 22:57 Bug in git-stash(.sh) ? Eli Barzilay
2012-04-27 23:02 ` Junio C Hamano
2012-04-28 0:16 ` Eli Barzilay
[not found] ` <CALO-gut4csy5wef4iGPGD5jVPc1f0iFBfS3MUWrOwc2yczdviw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[not found] ` <m2pqasb8mr.fsf-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
[not found] ` <87wr4za9mr.fsf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-04-28 23:59 ` Eli Barzilay
2012-04-29 22:01 ` Jeff King
[not found] ` <20120429220132.GB4491-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-04-29 22:26 ` Eli Barzilay
2012-05-01 13:42 ` Jeff King
[not found] ` <20120501134254.GA11900-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-03 18:44 ` [git] " Eli Barzilay
[not found] ` <20386.53745.200846.115335-a5nvgYPMCZcx/1z6v04GWfZ8FUJU4vz8@public.gmane.org>
2012-05-04 5:21 ` Jeff King
[not found] ` <20120504052106.GA15970-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-04 5:23 ` [PATCH 1/4] t1411: add more selector index/date tests Jeff King
2012-05-04 5:25 ` Jeff King [this message]
2012-05-04 5:27 ` [PATCH 4/4] reflog-walk: always make HEAD@{0} show indexed selectors Jeff King
[not found] ` <20120504052725.GD16107-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-04 17:02 ` Junio C Hamano
[not found] ` <7v7gwrc212.fsf-s2KvWo2KEQL18tm6hw+yZpy9Z0UEorGK@public.gmane.org>
2012-05-07 21:37 ` Jeff King
[not found] ` <20120507213752.GA19911-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-10 15:37 ` Jeff King
[not found] ` <20120510153754.GA23941-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-10 16:39 ` Junio C Hamano
[not found] ` <7vd36cng6n.fsf-s2KvWo2KEQL18tm6hw+yZpy9Z0UEorGK@public.gmane.org>
2012-05-10 17:19 ` OT: gmane address mangling selectors Jeff King
[not found] ` <20120510171912.GA29972-bBVMEuqLR+SYVEpFpFwlB0AkDMvbqDRI@public.gmane.org>
2012-05-10 17:35 ` Eli Barzilay
2012-05-04 18:57 ` [git] Re: Bug in git-stash(.sh) ? Eli Barzilay
[not found] ` <20388.9885.608325.489624-a5nvgYPMCZcx/1z6v04GWfZ8FUJU4vz8@public.gmane.org>
2012-05-04 22:36 ` Eli Barzilay
2012-05-04 5:26 ` [PATCH 3/4] reflog-walk: clean up "flag" field of commit_reflog struct Jeff King
2012-04-29 22:07 ` Bug in git-stash(.sh) ? Junio C Hamano
[not found] ` <7vlilexkcq.fsf-s2KvWo2KEQL18tm6hw+yZpy9Z0UEorGK@public.gmane.org>
2012-04-29 22:37 ` Eli Barzilay
2012-05-01 15:02 ` Jeff King
2012-04-28 7:47 ` Andreas Schwab
2012-04-28 20:23 ` Yann Hodique
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120504052518.GB16107@sigill.intra.peff.net \
--to=peff-adepduraxsq@public.gmane.org \
--cc=eli-oSK4jVRJLyZg9hUCZPvPmw@public.gmane.org \
--cc=git-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=gitster-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org \
--cc=magit-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=schwab-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org \
--cc=yann.hodique-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).