All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jari Aalto <jari.aalto@cante.net>
To: git@vger.kernel.org
Subject: [PATCH] --format=pretty: new modifiers cID, cIM, CIS
Date: Sat, 02 Feb 2008 00:43:29 +0200	[thread overview]
Message-ID: <fxwc70xa.fsf@blue.sea.net> (raw)
In-Reply-To: odb072ca.fsf@blue.sea.net

The default ISO 8601 modifier %ci is quite verbose displaying
everything up to the timezone. This consumes considerable amount of
characters.  The new modifiers offer way to display just the needed
amount of information, down to:

        %cID    date: YYYY-MM-DD
        %cIM    hour: YYYY-MM-DD HH:MM
        %cIS    second: YYYY-MM-DD HH:MM:SS

Signed-off-by: Jari Aalto <jari.aalto AT cante.net>
---

 ******************************************************
 THIS IS SAME PATCH- ONLY COMMIT MESSAGE HAS BEEN FIXED
 TO SYNCH WITH THE CONTENT
 ******************************************************

 Documentation/pretty-formats.txt |    5 ++++-
 cache.h                          |    3 +++
 date.c                           |   17 +++++++++++++++++
 pretty.c                         |   35 ++++++++++++++++++++++++++++++-----
 4 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 0193c3c..cb1bbac 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -113,7 +113,10 @@ The placeholders are:
 - '%cD': committer date, RFC2822 style
 - '%cr': committer date, relative
 - '%ct': committer date, UNIX timestamp
-- '%ci': committer date, ISO 8601 format
+- '%ci': committer date, ISO 8601 format, long YYYY-MM-DD HH:MM:SS TZ
+- '%cIM': committer date, ISO 8601 format, short YYYY-MM-DD HH:MM
+- '%cIS': committer date, ISO 8601 format, short YYYY-MM-DD HH:MM:SS
+- '%cID': committer date, ISO 8601 format, short YYYY-MM-DD
 - '%e': encoding
 - '%s': subject
 - '%b': body
diff --git a/cache.h b/cache.h
index 549f4bb..1fae94a 100644
--- a/cache.h
+++ b/cache.h
@@ -444,6 +444,9 @@ enum date_mode {
 	DATE_SHORT,
 	DATE_LOCAL,
 	DATE_ISO8601,
+	DATE_ISO8601_YYYYMMDD,
+	DATE_ISO8601_YYYYMMDDHHMM,
+	DATE_ISO8601_YYYYMMDDHHMMSS,
 	DATE_RFC2822
 };
 
diff --git a/date.c b/date.c
index 8f70500..ded9caa 100644
--- a/date.c
+++ b/date.c
@@ -144,6 +144,23 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode)
 				tm->tm_mday,
 				tm->tm_hour, tm->tm_min, tm->tm_sec,
 				tz);
+	else if (mode == DATE_ISO8601_YYYYMMDD)
+		sprintf(timebuf, "%04d-%02d-%02d",
+				tm->tm_year + 1900,
+				tm->tm_mon + 1,
+				tm->tm_mday);
+	else if (mode == DATE_ISO8601_YYYYMMDDHHMM)
+		sprintf(timebuf, "%04d-%02d-%02d %02d:%02d",
+				tm->tm_year + 1900,
+				tm->tm_mon + 1,
+				tm->tm_mday,
+				tm->tm_hour, tm->tm_min);
+	else if (mode == DATE_ISO8601_YYYYMMDDHHMMSS)
+		sprintf(timebuf, "%04d-%02d-%02d %02d:%02d:%02d",
+				tm->tm_year + 1900,
+				tm->tm_mon + 1,
+				tm->tm_mday,
+				tm->tm_hour, tm->tm_min, tm->tm_sec);
 	else if (mode == DATE_RFC2822)
 		sprintf(timebuf, "%.3s, %d %.3s %d %02d:%02d:%02d %+05d",
 			weekday_names[tm->tm_wday], tm->tm_mday,
diff --git a/pretty.c b/pretty.c
index b987ff2..5a8774b 100644
--- a/pretty.c
+++ b/pretty.c
@@ -282,9 +282,11 @@ static char *logmsg_reencode(const struct commit *commit,
 	return out;
 }
 
-static void format_person_part(struct strbuf *sb, char part,
-                               const char *msg, int len)
+static void format_person_part(struct strbuf *sb, char *ptr,
+			       const char *msg, int len)
 {
+	char part = ptr[0];
+	char next = ptr[1];
 	int start, end, tz = 0;
 	unsigned long date;
 	char *ep;
@@ -359,6 +361,26 @@ static void format_person_part(struct strbuf *sb, char part,
 	case 'i':	/* date, ISO 8601 */
 		strbuf_addstr(sb, show_date(date, tz, DATE_ISO8601));
 		return;
+	case 'I':	/* date, ISO 8601 + fine grained details */
+		switch (next) {
+		case 'D':	/* up till date */
+			strbuf_addstr(sb,
+					show_date(date, tz,
+						DATE_ISO8601_YYYYMMDD));
+			return;
+		case 'S':	/* up till date + sec */
+			strbuf_addstr(sb,
+					show_date(date, tz,
+						DATE_ISO8601_YYYYMMDDHHMMSS));
+
+			return;
+		default:	/* up till hour */
+			strbuf_addstr(sb,
+					show_date(date, tz,
+						DATE_ISO8601_YYYYMMDDHHMM));
+
+		}
+		return;
 	}
 }
 
@@ -532,11 +554,11 @@ static void format_commit_item(struct strbuf *sb, const char *placeholder,
 		strbuf_add(sb, msg + c->subject.off, c->subject.len);
 		return;
 	case 'a':
-		format_person_part(sb, placeholder[1],
+		format_person_part(sb, placeholder + 1,
 		                   msg + c->author.off, c->author.len);
 		return;
 	case 'c':
-		format_person_part(sb, placeholder[1],
+		format_person_part(sb, placeholder + 1,
 		                   msg + c->committer.off, c->committer.len);
 		return;
 	case 'e':
@@ -571,7 +593,10 @@ void format_commit_message(const struct commit *commit,
 		"cD",		/* committer date, RFC2822 style */
 		"cr",		/* committer date, relative */
 		"ct",		/* committer date, UNIX timestamp */
-		"ci",		/* committer date, ISO 8601 */
+		"ci",		/* committer date, ISO 8601 full, with TZ */
+		"cID",		/* committer date, ISO 8601 YYYY-MM-DD */
+		"cIM",		/* committer date, ISO 8601 YYYY-MM-DD HH:MM */
+		"cIS",		/* committer date, ISO 8601 YYYY-MM-DD HH:MM:SS*/
 		"e",		/* encoding */
 		"s",		/* subject */
 		"b",		/* body */
-- 
1.5.4-rc5.GIT-dirty

  reply	other threads:[~2008-02-01 22:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-01 22:12 [PATCH] --format=pretty: new modifiers cID, cIS, CIY Jari Aalto
2008-02-01 22:43 ` Jari Aalto [this message]
2008-02-01 23:04 ` Junio C Hamano
2008-02-01 23:16   ` Tommy Thorn
2008-02-01 23:29     ` Junio C Hamano
2008-02-02  1:12   ` Jari Aalto
2008-02-02  1:15   ` Jari Aalto

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=fxwc70xa.fsf@blue.sea.net \
    --to=jari.aalto@cante.net \
    --cc=git@vger.kernel.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 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.