Re: git and time
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Sep 27, 2006, 16:29 UTC
- Message-ID
- <Pine.LNX.4.64.0609270919220.3952@g5.osdl.org>
- In-Reply-To
- <20060927140918.65775.qmail@web51004.mail.yahoo.com>
On Wed, 27 Sep 2006, Matthew L Foster wrote:
> > Perhaps git should record three(+) timestamps, adding when the change was committed into this > repository?
If you ask for logging, that's exactly what you get.
Well, almost.
You cannot connect the time to a _commit_, since a commit (very much by design) is totally immutable. Once you have created any git object, it's done. It can never be changed ever again, and this is not just a small detail, it's what the whole system builds up on, and it's where the security and trustworthiness fundamentally comes from (it's also where the naming scheme comes from - things are named by their contents, so if you were to ever change them again, they'd have to be renamed - they effectively _become_ something different).
Also, you fundamentally couldn't do it anyway, since the third time isn't actually even well-defined in a distributed manner. It only makes sense very much in a local way, and as such can never be part of the distributed data - and trying to add something like that to the commit would be fundamentally incorrect.
BUT.
What you CAN do is to connect (in any particular private repository) a _branch_update_ with the time it was done. That is Shawn Pierces "reflog" work - you can track a particular branch _locally_. It's purely local to that _one_ repository, though. It by definition makes no sense anywhere else, and it's not tracking commits, it's literally tracking how branches changed in a local copy.
To enable it, just add a
[core] logAllRefUpdates=true
thing to your .git/config file (or, if you want to do it for _all_ the projects you track, you can just do it in your ~/.gitconfig file, and it should be the default for everything you do).
(Althernatively, you can choose to log just a _single_ branch by just creating the ".git/logs/refs/heads/<branchname>" file - git should start logging that branch automatically)
This is a reasonably new feature, so old git versions need not apply.
Linus