threads / discuss / 52408

How to determine age of HEAD commit

Subject: How to determine age of HEAD commit

## tl;dr

3 messages between Dec 8, 2019 and Dec 8, 2019.

replies: 2people: 2as markdown or json

Philip Oakley· Dec 8, 2019, 12:09 UTC · lore

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· Dec 8, 2019, 14:07 UTC · re: Philip Oakley · lore

Re: How to determine age of HEAD commit

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· Dec 8, 2019, 15:05 UTC · re: Roger Gammans · lore

Re: How to determine age of HEAD commit

Hi Roger,
On 08/12/2019 14:07, Roger Gammans wrote:
Show 24 quoted lines
> 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

← back to recent threads