Hexo 博客近期出现了一个问题:文章的最近更新时间不正确,会导致显示出错,经过查询,发现是 CI 部署的锅。

修复出现问题,时间依然无法更改

根据这个 issue 的说法,CI 在执行 git clonegit pull 时,文件的修改日期会变为部署时的时间。可以通过自己写 updated 时间来修复,也可以使用一个脚本,读取 git 仓库中的修改日期,来覆盖实际文件的修改日期。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
export TZ='Asia/Shanghai'
git ls-files -z | while read -d '' path; do
if [[ $path == source/_posts/* ]]; then
touch -d "$(git log -1 --format="@%ct" "$path")" "$path"
printf "$(git log -1 --format="%ct" "$path" | xargs -I{} date -d @{} "+%Y-%m-%d %H:%M:%S")"
printf \\t
echo "$path"
fi
done

之后根据你的部署方式,将这个脚本加入到工作流文件或其他配置文件中。
然后部署就可以了