Re: Git should preserve modification times at least on request
- From
Theodore Ts'o <tytso@mit.edu>
- Date
- Feb 20, 2018, 01:22 UTC
- Message-ID
- <20180220012219.GA9791@thunk.org>
- In-Reply-To
- <20180219220819.GA10466@helen.PLASMA.Xg8.DE>
On Mon, Feb 19, 2018 at 11:08:19PM +0100, Peter Backes wrote:
> Is thetre some existing code that could be used? I think I read > somewhere that git once did preserve mtimes, but that this code was > removed because of the build tool issues. Perhaps that code could > simply be put back in, and surrounded by conditions.
I don't believe that was ever true, because the mod times is simply not *stored* anywhere.
You might want to consider trying to implement it as hook scripts first, and see how well/poorly it works for you. I do have a use case, which is to maintain the timestamps for guilt (a quilt-like patch management system which uses git). At the moment I just use a manual script, save-timestamps, which looks like this:
#!/bin/sh stat -c "touch -d @%Y %n" * | sort -k 3 | grep -v "~$" | sort -k3 > timestamps
and then I just include the timestamps file in thhe commit. When I unpack the file elsewhere, I just run the command ". timestamps", or if I am manually editing a single file, I might do:
grep file-name-of-patch timestamps | sht
This works because the timestamps file has lines which look like this:
touch -d @1519007593 jbd2-clarify-recovery-checksum-error-msg
I've been too lazy to automate this using a "pre-commit" and "post-checkout" hook, but it *really* wouldn't be that hard. Right now it also only works for files in the top-level of the repo, which is all I have in my guilt patch repo. Making this work in a multiple-directory environment is also left as an exercise to the reader. :-)
Cheers,
- Ted
P.S. Also left to the reader is making it work on legacy OS's like Windows. :-)