git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git and mtime

From
Andreas Ericsson <ae@op5.se>
Date
Nov 20, 2008, 13:06 UTC
Message-ID
<492560C5.5070308@op5.se>
In-Reply-To
<20081120112708.GC22787@ravenclaw.codelibre.net>
Roger Leigh wrote:
Show 18 quoted lines
> On Wed, Nov 19, 2008 at 05:18:16PM +0100, Christian MICHON wrote:
>> On Wed, Nov 19, 2008 at 12:37 PM, Roger Leigh <rleigh@codelibre.net> wrote:
>>> Would it be possible for git to store the mtime of files in the tree?
>>>
>>> This would make it possible to do this type of work in git, since it's
>>> currently a bit random as to whether it works or not.  This only
>>> started when I upgraded to an amd64 architecture from powerpc32,
>>> I guess it's maybe using high-resolution timestamps.
>>>
>> beside the obvious answer it comes back often as a request, it is
>> possible in theory to create a shell script which, for each file
>> present in the sandbox in the current branch, would find the mtime of
>> the last commit on that file (quite an expensive operation) and apply
>> it.
> 
> Surely this is only expensive because you're not already storing the
> information in the tree; if it was there, it would be (relatively)
> cheap?

No, it's because git is *snapshot* based and doesn't care about anything but contents. Storing filestate information in the tree would be a backwards incompatible change that would require a major version change.

Caring about meta-data the way you mean it would mean that
  git add foo.c; git commit -m "kapooie"; touch foo.c; git status

would show "foo.c" as modified. How sane is that? Or should we introduce a new concept for altered metadata only? "metafied"? So what do we do when the next user whizzes along and wants support for full acl's? And what do we do when Windows (or some other bizarre system) add some sort of extension so we have to have different types of ACL support on both systems? Kablooie and welcome to interoperability hell.

>  You could even compare the old and new trees to see if you
> needed to touch a file at all.
> 

We already do that by matching the SHA1 hash for the index entries. Only content that is actually different between to branches are altered upon checkout (which is why it's so damn fast when you're using topic- branches properly).

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
Previous: Roger LeighNext: Roger Leigh
Message 17 of 33 in “git and mtime”
  1. Roger LeighNov 19, 2008
  2. Matthias KestenholzNov 19, 2008
  3. Andreas EricssonNov 20, 2008
  4. Roger LeighNov 20, 2008
  5. Andreas EricssonNov 20, 2008
  6. Andreas EricssonNov 20, 2008
  7. Johannes SchindelinNov 19, 2008
  8. ArafangionNov 19, 2008
  9. Matthieu MoyNov 19, 2008
  10. Andreas EricssonNov 20, 2008
  11. Johannes SchindelinNov 20, 2008
  12. Matthieu MoyNov 20, 2008
  13. Jakub NarebskiNov 19, 2008
  14. Christian MICHONNov 19, 2008
  15. Johannes SchindelinNov 20, 2008
  16. Roger LeighNov 20, 2008
  17. Andreas EricssonNov 20, 2008
  18. Roger LeighNov 20, 2008
  19. Andreas EricssonNov 20, 2008
  20. Roger LeighNov 20, 2008
  21. Kyle MoffettNov 20, 2008
  22. Andreas EricssonNov 20, 2008
  23. Matthias KestenholzNov 20, 2008
  24. Randal L. SchwartzNov 20, 2008
  25. Roger LeighNov 20, 2008
  26. Daniel BarkalowNov 20, 2008
  27. Joey HessNov 20, 2008
  28. martin f krafftNov 20, 2008
  29. Roger LeighNov 20, 2008
  30. martin f krafftNov 20, 2008
  31. Samuel TardieuNov 20, 2008
  32. Johannes SchindelinNov 20, 2008
  33. Roger LeighNov 20, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.