All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Eli Barzilay <eli@barzilay.org>
Cc: Yann Hodique <yann.hodique@gmail.com>,
	Andreas Schwab <schwab@linux-m68k.org>,
	Junio C Hamano <gitster@pobox.com>,
	git@vger.kernel.org, magit@googlegroups.com
Subject: [PATCH 3/4] reflog-walk: clean up "flag" field of commit_reflog struct
Date: Fri, 4 May 2012 01:26:26 -0400	[thread overview]
Message-ID: <20120504052626.GC16107@sigill.intra.peff.net> (raw)
In-Reply-To: <20120504052106.GA15970@sigill.intra.peff.net>

When we prepare to walk a reflog, we parse the specification
and pull some information from it, such as which reflog to
look in (e.g., HEAD), and where to start (e.g., HEAD@{10} or
HEAD@{yesterday}). The resulting struct has a "recno" field
to show where in the reflog we are starting. It also has a
"flag" field; if true, it means the recno field came from
parsing a date like HEAD@{yesterday}.

There are two problems with this:

  1. "flag" is an absolutely terrible name, as it conveys
     nothing about the meaning

  2. you can tell "HEAD" from "HEAD@{yesterday}", but you
     can't differentiate "HEAD" from "HEAD{0}"

This patch converts the flag into a tri-state (and gives it
a better name!).

Signed-off-by: Jeff King <peff@peff.net>
---
 reflog-walk.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/reflog-walk.c b/reflog-walk.c
index 86d1884..3549318 100644
--- a/reflog-walk.c
+++ b/reflog-walk.c
@@ -126,7 +126,12 @@ static void add_commit_info(struct commit *commit, void *util,
 }
 
 struct commit_reflog {
-	int flag, recno;
+	int recno;
+	enum selector_type {
+		SELECTOR_NONE,
+		SELECTOR_INDEX,
+		SELECTOR_DATE
+	} selector;
 	struct complete_reflogs *reflogs;
 };
 
@@ -150,6 +155,7 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
 	struct complete_reflogs *reflogs;
 	char *branch, *at = strchr(name, '@');
 	struct commit_reflog *commit_reflog;
+	enum selector_type selector = SELECTOR_NONE;
 
 	if (commit->object.flags & UNINTERESTING)
 		die ("Cannot walk reflogs for %s", name);
@@ -162,7 +168,10 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
 		if (*ep != '}') {
 			recno = -1;
 			timestamp = approxidate(at + 2);
+			selector = SELECTOR_DATE;
 		}
+		else
+			selector = SELECTOR_INDEX;
 	} else
 		recno = 0;
 
@@ -200,7 +209,6 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
 
 	commit_reflog = xcalloc(sizeof(struct commit_reflog), 1);
 	if (recno < 0) {
-		commit_reflog->flag = 1;
 		commit_reflog->recno = get_reflog_recno_by_time(reflogs, timestamp);
 		if (commit_reflog->recno < 0) {
 			free(branch);
@@ -209,6 +217,7 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
 		}
 	} else
 		commit_reflog->recno = reflogs->nr - recno - 1;
+	commit_reflog->selector = selector;
 	commit_reflog->reflogs = reflogs;
 
 	add_commit_info(commit, commit_reflog, &info->reflogs);
@@ -267,7 +276,7 @@ void get_reflog_selector(struct strbuf *sb,
 	}
 
 	strbuf_addf(sb, "%s@{", printed_ref);
-	if (commit_reflog->flag || dmode) {
+	if (commit_reflog->selector == SELECTOR_DATE || dmode) {
 		info = &commit_reflog->reflogs->items[commit_reflog->recno+1];
 		strbuf_addstr(sb, show_date(info->timestamp, info->tz, dmode));
 	} else {
-- 
1.7.10.1.10.ge534bc3

  parent reply	other threads:[~2012-05-04  5:26 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                               ` [PATCH 2/4] log: respect date_mode_explicit with --format:%gd Jeff King
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                             ` Jeff King [this message]
2012-04-29 22:07             ` 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=20120504052626.GC16107@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=eli@barzilay.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=magit@googlegroups.com \
    --cc=schwab@linux-m68k.org \
    --cc=yann.hodique@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.