Skip to contentSkip to conversation

Set file modification time on checkout

DISCUSSION Patrick Hemmer 2 participants 2 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

The request is to allow git to set the file modification time on checkout to the commit-author-date of the commit which last modified the file.
Yes I know this is in the FAQ, but the FAQ entry is missing an increasingly common use case: docker.
When docker builds an image, it generates layers of images based on each build step. Adding a file would be a build step, and for this action it generates a hash based on the file modification time & content. Next time the image is built, if these haven't changed, the previously built layer is reused. And like git commit history, if a layer changes, the hash of all subsequent layers change and have to be rebuilt. So reusing layers can save a ton of time.

Now I'm not proposing that this be made the default action. The make use case is legitimate. But it would be nice to have an option for checkout and reset which toggles the behavior.

-Patrick

#1 lore raw
Quoted 8 lines · Patrick Hemmer

The request is to allow git to set the file modification time on checkout to the commit-author-date of the commit which last modified the file.
Yes I know this is in the FAQ, but the FAQ entry is missing an increasingly common use case: docker.
When docker builds an image, it generates layers of images based on each build step. Adding a file would be a build step, and for this action it generates a hash based on the file modification time & content.

Why do they do this?
The file content is the only thing that matters.

The other thing is to use a hook, utilizing test-chmtime from test-chmtime.c