# [PATCH] pretty: add format specifiers for short and raw date formats

3 messages from 2015-10-07 to 2015-10-08. Participants: SZEDER Gábor, Junio C Hamano.
Thread: https://gitlist.dev/t/40508

## SZEDER Gábor, 2015-10-07 16:28

Subject: [PATCH] pretty: add format specifiers for short and raw date formats
Message-ID: <1444235305-8718-1-git-send-email-szeder@ira.uka.de>
URL: https://gitlist.dev/e/1444235305-8718-1-git-send-email-szeder%40ira.uka.de

```
Other date formats already have their format specifiers and so should
these, so they will be available in pretty format aliases as well.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
 Documentation/pretty-formats.txt | 4 ++++
 pretty.c                         | 6 ++++++
 2 files changed, 10 insertions(+)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 671cebd95c..ce62c70659 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -120,6 +120,8 @@ The placeholders are:
 - '%at': author date, UNIX timestamp
 - '%ai': author date, ISO 8601-like format
 - '%aI': author date, strict ISO 8601 format
+- '%as': author date, short format
+- '%aR': author date, raw format
 - '%cn': committer name
 - '%cN': committer name (respecting .mailmap, see
   linkgit:git-shortlog[1] or linkgit:git-blame[1])
@@ -132,6 +134,8 @@ The placeholders are:
 - '%ct': committer date, UNIX timestamp
 - '%ci': committer date, ISO 8601-like format
 - '%cI': committer date, strict ISO 8601 format
+- '%cs': committer date, short format
+- '%cR': committer date, raw format
 - '%d': ref names, like the --decorate option of linkgit:git-log[1]
 - '%D': ref names without the " (", ")" wrapping.
 - '%e': encoding
diff --git a/pretty.c b/pretty.c
index 151c2ae312..e3ea2c03b0 100644
--- a/pretty.c
+++ b/pretty.c
@@ -723,6 +723,12 @@ static size_t format_person_part(struct strbuf *sb, char part,
 	case 'I':	/* date, ISO 8601 strict */
 		strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(ISO8601_STRICT)));
 		return placeholder_len;
+	case 's':	/* date, short */
+		strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(SHORT)));
+		return placeholder_len;
+	case 'R':	/* date, raw */
+		strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(RAW)));
+		return placeholder_len;
 	}
 
 skip:
-- 
2.6.1.134.ge857153

```

## Junio C Hamano, 2015-10-07 20:22

Subject: Re: [PATCH] pretty: add format specifiers for short and raw date formats
Message-ID: <xmqqmvvutone.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqmvvutone.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <1444235305-8718-1-git-send-email-szeder@ira.uka.de>

```
SZEDER Gábor <szeder@ira.uka.de> writes:

> @@ -120,6 +120,8 @@ The placeholders are:
>  - '%at': author date, UNIX timestamp
>  - '%ai': author date, ISO 8601-like format
>  - '%aI': author date, strict ISO 8601 format
> +- '%as': author date, short format
> +- '%aR': author date, raw format

Hmmm, are these two a good things the only ones that are missing?

It makes me wonder if it's time for us to move to a more extensible
format, e.g. "%aT(...)", in which 'T' stands for 'timestamp' and the
part in the parentheses can be any format string that is understood
by "log --date=<format>" [*1*].  Once we have something like that,
we can keep the existing ones for historical convenience, stop
adding new ones [*2*] and do not have to worry about these two
mechanisms going out of sync.

Also, "%at" is almost there as a replacement for "%aR"; what we are
missing really is "%aZ" for zone offset.  If we had "%aZ", we do not
need "%aR", as that is "%at %aZ".


[Footnote]

*1* Yes, and in longer term, we should really aim to unify the
    for-each-ref format and "--pretty=format:" format.  "%aT(...)"
    is probably a step in a wrong direction, and it should probably
    be more like "%(authordate:...)".

*2* Because we have "%ad", we _can_ stop adding new ones already.

```

## SZEDER Gábor, 2015-10-08 11:04

Subject: Re: [PATCH] pretty: add format specifiers for short and raw date formats
Message-ID: <20151008130426.Horde.ovF3CHaJ-fo48aLDf23t-Q1@webmail.informatik.kit.edu>
URL: https://gitlist.dev/e/20151008130426.Horde.ovF3CHaJ-fo48aLDf23t-Q1%40webmail.informatik.kit.edu
In-Reply-To: <xmqqmvvutone.fsf@gitster.mtv.corp.google.com>

```

Quoting Junio C Hamano <gitster@pobox.com>:

> SZEDER Gábor <szeder@ira.uka.de> writes:
>
>> @@ -120,6 +120,8 @@ The placeholders are:
>>  - '%at': author date, UNIX timestamp
>>  - '%ai': author date, ISO 8601-like format
>>  - '%aI': author date, strict ISO 8601 format
>> +- '%as': author date, short format
>> +- '%aR': author date, raw format
>
> Hmmm, are these two a good things the only ones that are missing?

Sort of.  There is 'local', but after add00ba2de (date: make "local"
orthogonal to date format, 2015-09-03) hit master that's not a
format anymore.

> It makes me wonder if it's time for us to move to a more extensible
> format, e.g. "%aT(...)", in which 'T' stands for 'timestamp' and the
> part in the parentheses can be any format string that is understood
> by "log --date=<format>" [*1*].  Once we have something like that,
> we can keep the existing ones for historical convenience, stop
> adding new ones [*2*] and do not have to worry about these two
> mechanisms going out of sync.

> *1* Yes, and in longer term, we should really aim to unify the
>     for-each-ref format and "--pretty=format:" format.  "%aT(...)"
>     is probably a step in a wrong direction, and it should probably
>     be more like "%(authordate:...)".

That would be great, especially that in [*1*].  Real words are so
much better than one or two letter codes.
Of course that would also be a lot more invasive change.

> *2* Because we have "%ad", we _can_ stop adding new ones already.

With this patch in my tree I have this pretty alias

   pretty.commitref=tformat:%h (%s, %as)

in my config, and a simple '--pretty=commitref' option works on its
own to produce the format that I used above.  With '%ad' that
wouldn't work, because I would need the additional '--date=short'
option, too, which means I have to remember it and have to type more
every time.

Gábor

```
