From: Theodore Ts'o Date: Tue, 20 Feb 2018 01:22:19 GMT Subject: Re: Git should preserve modification times at least on request 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. :-)