Restore file timestamps from Git
Git doesn't restore file timestamps by default. So the file timestamp indicates when the file was cloned locally. And in most cases that's fine. But such a timestamp will prevent you from detecting if a file on a remote server has changed since it was last committed.
Fortunately, there's an easy way to restore the file timestamps to the time of the last commit. You can use the git-restore-mtime
script. If you need to run the script in a GitHub Actions workflow, there's even a custom action available that makes it easier to use.
Still, you have to know that the script requires full repository history to work and by default the checkout action in GitHub Actions doesn't fetch it. To change that, you need to set the fetch-depth
to 0
:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
As the very next step, you should run the git-restore-mtime
action, before doing any actions that depend on the correct file timestamps:
- name: restore timestamps
uses: chetan/git-restore-mtime-action@v2
If you need to restore the file timestamps in your GitHub Actions workflows (e.g., for backups of remotely edited files to work correctly), you can use the git-restore-mtime
action. Just make sure to adjust the fetch depth of the checkout action before that.