threads / discuss / 45023

How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

Subject: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

## tl;dr

6 messages between Feb 2, 2017 and Feb 4, 2017.

replies: 5people: 3as markdown or json

Hilco Wijbenga· Feb 2, 2017, 17:51 UTC · lore
Hi all,

I'm trying to get the committer date printed in a custom fashion. Using "%cI" gets me close:

$ git show --format="%cI | %an" master | head -n 1 2017-01-31T17:02:13-08:00 | Hilco Wijbenga

I would like to get rid of the "-08:00" bit at the end of the timestamp. According to the "git show" manual I should be able to use "%<(<N>[,trunc|ltrunc|mtrunc])" to drop that last part.

$ git show --format="%<(19,trunc)cI | %an" master | head -n 1 cI | Hilco Wijbenga

Mmm, it seems to be recognized as a valid "something" but it's not working as I had expected. :-) I tried several other versions of this but no luck. Clearly, I'm misunderstanding the format description. How do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?

Cheers, Hilco

G. Sylvie Davies· Feb 3, 2017, 04:19 UTC · re: Hilco Wijbenga · lore

Re: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

On Thu, Feb 2, 2017 at 9:51 AM, Hilco Wijbenga <hilco.wijbenga@gmail.com> wrote:
Show 20 quoted lines
> Hi all,
>
> I'm trying to get the committer date printed in a custom fashion.
> Using "%cI" gets me close:
>
> $ git show --format="%cI | %an" master | head -n 1
> 2017-01-31T17:02:13-08:00 | Hilco Wijbenga
>
> I would like to get rid of the "-08:00" bit at the end of the
> timestamp. According to the "git show" manual I should be able to use
> "%<(<N>[,trunc|ltrunc|mtrunc])" to drop that last part.
>
> $ git show --format="%<(19,trunc)cI | %an" master | head -n 1
> cI | Hilco Wijbenga
>
> Mmm, it seems to be recognized as a valid "something" but it's not
> working as I had expected. :-) I tried several other versions of this
> but no luck. Clearly, I'm misunderstanding the format description. How
> do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?
>
Will this work for you?

$ git show -s --pretty='%cd | %an' --date=format:%FT%R:%S 2017-02-02T10:01:36 | G. Sylvie Davies

I have no idea how portable this might be.  As "git help log" says:
         --date=format:...  feeds the format ...  to your system
strftime. Use --date=format:%c to show the date in your system
locale’s preferred format. See the strftime manual for a complete list
of format placeholders.
- Sylvie
Hilco Wijbenga· Feb 3, 2017, 04:32 UTC · re: G. Sylvie Davies · lore

Re: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

On 2 February 2017 at 20:19, G. Sylvie Davies <sylvie@bit-booster.com> wrote:
Show 26 quoted lines
> On Thu, Feb 2, 2017 at 9:51 AM, Hilco Wijbenga <hilco.wijbenga@gmail.com> wrote:
>> Hi all,
>>
>> I'm trying to get the committer date printed in a custom fashion.
>> Using "%cI" gets me close:
>>
>> $ git show --format="%cI | %an" master | head -n 1
>> 2017-01-31T17:02:13-08:00 | Hilco Wijbenga
>>
>> I would like to get rid of the "-08:00" bit at the end of the
>> timestamp. According to the "git show" manual I should be able to use
>> "%<(<N>[,trunc|ltrunc|mtrunc])" to drop that last part.
>>
>> $ git show --format="%<(19,trunc)cI | %an" master | head -n 1
>> cI | Hilco Wijbenga
>>
>> Mmm, it seems to be recognized as a valid "something" but it's not
>> working as I had expected. :-) I tried several other versions of this
>> but no luck. Clearly, I'm misunderstanding the format description. How
>> do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?
>>
>
> Will this work for you?
>
> $ git show -s --pretty='%cd | %an' --date=format:%FT%R:%S
> 2017-02-02T10:01:36 | G. Sylvie Davies
Ah, that does indeed do exactly what I want. Thank you.
Show 6 quoted lines
> I have no idea how portable this might be.  As "git help log" says:
>
>          --date=format:...  feeds the format ...  to your system
> strftime. Use --date=format:%c to show the date in your system
> locale’s preferred format. See the strftime manual for a complete list
> of format placeholders.
It should be fine for my purposes.

Any idea why "%<(19,trunc)cl" doesn't work? (Your solution solves my original problem perfectly but I'd like to understand how I'm misreading the spec.)

Duy Nguyen· Feb 3, 2017, 08:06 UTC · re: Hilco Wijbenga · lore

Re: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

On Fri, Feb 3, 2017 at 12:51 AM, Hilco Wijbenga <hilco.wijbenga@gmail.com> wrote:

Show 13 quoted lines
> Hi all,
>
> I'm trying to get the committer date printed in a custom fashion.
> Using "%cI" gets me close:
>
> $ git show --format="%cI | %an" master | head -n 1
> 2017-01-31T17:02:13-08:00 | Hilco Wijbenga
>
> I would like to get rid of the "-08:00" bit at the end of the
> timestamp. According to the "git show" manual I should be able to use
> "%<(<N>[,trunc|ltrunc|mtrunc])" to drop that last part.
>
> $ git show --format="%<(19,trunc)cI | %an" master | head -n 1
You're almost there. Just insert another '%' between "trunc)" and "cI".
> How do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?
You'll get an ellipsis at the end though.. (i.e. 02:13... | Hilco)
-- 
Duy
Hilco Wijbenga· Feb 3, 2017, 17:10 UTC · re: Duy Nguyen · lore

Re: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

On 3 February 2017 at 00:06, Duy Nguyen <pclouds@gmail.com> wrote:
Show 17 quoted lines
> On Fri, Feb 3, 2017 at 12:51 AM, Hilco Wijbenga
> <hilco.wijbenga@gmail.com> wrote:
>> Hi all,
>>
>> I'm trying to get the committer date printed in a custom fashion.
>> Using "%cI" gets me close:
>>
>> $ git show --format="%cI | %an" master | head -n 1
>> 2017-01-31T17:02:13-08:00 | Hilco Wijbenga
>>
>> I would like to get rid of the "-08:00" bit at the end of the
>> timestamp. According to the "git show" manual I should be able to use
>> "%<(<N>[,trunc|ltrunc|mtrunc])" to drop that last part.
>>
>> $ git show --format="%<(19,trunc)cI | %an" master | head -n 1
>
> You're almost there. Just insert another '%' between "trunc)" and "cI".

Thank you so much! This has been bugging me. :-) Rereading "git help show", I guess it's implied I should do this but it very much wasn't clear to me (obviously). I guess I'm too used to the "%19.19s" type of approach. Maybe there should be some examples?

>> How do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?
>
> You'll get an ellipsis at the end though.. (i.e. 02:13... | Hilco)

Indeed, that's not very nice. I suppose I can understand the reason for it but it mostly defeats the purpose of "trunc", doesn't it? Luckily, Sylvie's solution does exactly what I want.

Duy Nguyen· Feb 4, 2017, 11:49 UTC · re: Hilco Wijbenga · lore

Re: How to use git show's "%<(<N>[,trunc|ltrunc|mtrunc])"?

On Sat, Feb 4, 2017 at 12:10 AM, Hilco Wijbenga <hilco.wijbenga@gmail.com> wrote:

Show 6 quoted lines
>>> How do I get "2017-01-31T17:02:13 | Hilco Wijbenga" to be output?
>>
>> You'll get an ellipsis at the end though.. (i.e. 02:13... | Hilco)
>
> Indeed, that's not very nice. I suppose I can understand the reason
> for it but it mostly defeats the purpose of "trunc", doesn't it?

It depends. When you truncate a commit subject line, you may want an indicator that you're not seeing the whole line. For fixed fields like dates when you expect every string to be truncated, then yes there's not much point to show the ellipsis.

-- 
Duy

← back to recent threads