Git handling of commit times

Ed Maste emaste at freebsd.org
Wed May 29 17:09:21 UTC 2019


On Wed, 29 May 2019 at 11:40, Grzegorz Junka <list1 at gjunka.com> wrote:
>
> Timestamp alone doesn't give much information. What matters is when the
> branch in which the commit was added has been merged with other branches
> (shown as merge commits in the history).

Our history is mostly devoid of merges though, but your broader point
is certainly valid - the relationship that's actually important is the
parent/child commits, not the order of either date stamp.

> Bear in mind that commits are local (by the virtue of git being
> distributed scm). You can certainly write a git hook that verifies local
> time to be approximately the same as server time and stop the commit if
> that's not the case. But that's clunky and patronizing in my opinion\
> (e.g. someone won't be able to commit when on a train and off the grid).

I'm not suggesting that we require the commit time to be close to the
server time, just that we could disallow two actually invalid cases:

- commit time is earlier than parent(s)
- commit time is later than the (accurate) server time

If you have local commits made while on the train and someone else
pushes to the canonical repository before you're back online you're
going to have to merge or rebase, and will then have an updated commit
time.

The solution to this issue triggering is easy - just make sure the
client has the correct time.

> Git commits are joined by hashes, timestamp is only some metadata. It
> makes sens to talk about amount of commits since a particular hash but
> not so much about amount of commits since a particular date.

Indeed, but that said developers like to think in terms like "commits
since a particular date", and we should provide a good experience
there if we can do so without restricting realistic workflows.


More information about the freebsd-git mailing list