cloudflare pages恢复文件修改时间

我的很多静态页面网站都是托管在cf pages上面的,方便快捷,还支持在云端运行部署。

但是有一些项目有在部署时候读取文件访问时间的需求,比如这个博客,和我用来保存静态文件的 static.hakurei.cc

cloudflare在部署的时候会把你的仓库克隆下来,再运行部署,但是直接克隆就丢失了文件原始的时间属性,导致应用获取到的文件访问时间、创建时间等等全部变成构建的时间。放到博客上就是每一个文章的发布时间全部变成同一个构建时间。

所以我趁放假查了资料写了个脚本放进有关项目,用文件的commit时间来生成文件的访问时间。

把它放进项目,修改cf构建设置的构建命令为这个脚本即可。

1
2
3
4
5
6
7
8
9
10
11
# fix file chg-date
git config --global core.quotepath false #显示中文文件名
git fetch --unshallow #cloudflare 默认depth=1,此处强制克隆所有数据
git ls-files | while read file;
do
echo "Touching $file..." $(git log -1 --format="@%ct" -- "$file") ;
touch -d $(git log -1 --format="@%ct" -- "$file") "$file";
done
#预处理完成

node indexer.js #此处换成你自己的构建指令

相关资料:

从 Git 提交历史中「恢复」文件修改时间

在 git clone 时添加了 --depth 后,如何重新拉取所有全部的历史来获取完整的仓库

git 显示中文和解决中文乱码


cloudflare pages恢复文件修改时间
https://www.hakurei.org.cn/2023/09/17/git-clone-restore-file-modify-time/
作者
zjkimin
发布于
2023年9月17日
更新于
2023年9月17日
许可协议