# How to determine age of HEAD commit

3 messages from 2019-12-08 to 2019-12-08. Participants: Philip Oakley, Roger Gammans.
Thread: https://gitlist.dev/t/52408

## Philip Oakley, 2019-12-08 12:09

Subject: How to determine age of HEAD commit
Message-ID: <956e2efe-3426-f61e-7686-5416b51931b9@iee.email>
URL: https://gitlist.dev/e/956e2efe-3426-f61e-7686-5416b51931b9%40iee.email

```
The Visual Studio git solution uses the vcpkg manager for dependencies, 
via a cloned git repo.

To avoid repeated probing for updates when compiling, I considered 
holding of on 'git pull' for the repo for say 24 hours (daily update). 
However I'm not aware of a git command that returns the numeric value of 
the agedness of a given local commit (typically HEAD).

Is there a command that does return the numeric agedness of a commit 
(e.g. now - commit_date, in seconds)?
-- 
Philip


```

## Roger Gammans, 2019-12-08 14:07

Subject: Re: How to determine age of HEAD commit
Message-ID: <0a578dce37e8802b2022df80c336f61a264a33e3.camel@gammascience.co.uk>
URL: https://gitlist.dev/e/0a578dce37e8802b2022df80c336f61a264a33e3.camel%40gammascience.co.uk
In-Reply-To: <956e2efe-3426-f61e-7686-5416b51931b9@iee.email>

```
On Sun, 2019-12-08 at 12:09 +0000, Philip Oakley wrote:
> Is there a command that does return the numeric agedness of a commit 
> (e.g. now - commit_date, in seconds)?

Hi

I don't know a specific command for the age. But `git cat-file commit
HEAD`, will give you the commit's timestamps in seconds from the the
epoch. (Plus some timezone info).

I can construct a bash script, shown below (warning: only had the most 
rudimentary testing), which turns that into an age. For your use case
you might be better getting yesterdays unix-timestamp from date, if GNU
date is available, and directly comparing it to the commit timestamp.

------
#!/bin/bash

now=$(date +"%s")
commit=$(git cat-file commit HEAD | grep committer)
commit=${commit##*>}
commit=${commit%%+*}
echo $(( $now-$commit ))
#--------------

-- 
Roger Gammans <rgammans@gammascience.co.uk>


```

## Philip Oakley, 2019-12-08 15:05

Subject: Re: How to determine age of HEAD commit
Message-ID: <74d4a783-6196-08ce-b600-2eb2cacecac7@iee.email>
URL: https://gitlist.dev/e/74d4a783-6196-08ce-b600-2eb2cacecac7%40iee.email
In-Reply-To: <0a578dce37e8802b2022df80c336f61a264a33e3.camel@gammascience.co.uk>

```
Hi Roger,

On 08/12/2019 14:07, Roger Gammans wrote:
> On Sun, 2019-12-08 at 12:09 +0000, Philip Oakley wrote:
>> Is there a command that does return the numeric agedness of a commit
>> (e.g. now - commit_date, in seconds)?
> Hi
>
> I don't know a specific command for the age. But `git cat-file commit
> HEAD`, will give you the commit's timestamps in seconds from the the
> epoch. (Plus some timezone info).
>
> I can construct a bash script, shown below (warning: only had the most
> rudimentary testing), which turns that into an age. For your use case
> you might be better getting yesterdays unix-timestamp from date, if GNU
> date is available, and directly comparing it to the commit timestamp.
>
> ------
> #!/bin/bash
>
> now=$(date +"%s")
> commit=$(git cat-file commit HEAD | grep committer)
> commit=${commit##*>}
> commit=${commit%%+*}
> echo $(( $now-$commit ))
> #--------------
>
Thanks,
That has spurred me into looking at a few other ideas.
Unfortunately the script needs to run inside a DOS batch file as part of 
a Visual Studio pre-build step, hence the desire for a direct command.

That said I have now found, with a bit of rooting around, that

    `git log -1 --format=format:"%ct" HEAD`

does appear to give the right form of answer. Just need to see if I can 
fit it into the DOS pre-build script now ;-)
There may be extra tweaks needed.. (a merged pull has the pull date, but 
a fast forward pull has the original date)

Philip

Philip

```
