HEXO修复持续构建博客造成的更新时间错误

当使用自动化部署时,发现部署成功后,所有文章的更新时间都变成了此次提交修改的时间,但有些文章在上一次提交后是没有发生过任何修改的。
这是因为git在推送更新时,并不记录保存文件的访问时间、修改时间等元信息,(原因在这里)所以每次使用git把项目clone下来时,文件的时间都是克隆时的时间。又因为如果没有在front-matter中指定updated,Hexo会默认使用文件的最后修改时间作为文章的更新时间,所以会出现所有文章的更新时间都发生变化的情况。
总的来说,使用git clone下来的文件的时间都不是原来文件的时间,而自动化部署每次都需要clone源码才能进行后面的生成和部署操作,所以目前如果想正确显示更新时间。需要:
方法一:使用 updated 属性字段
在文章中的front-matter中添加updated: 更新时间项
1 | |
以后修改文件的话也只需修改updated项对应日期即可,但是这样有个弊端,完全需要靠自己自觉去修改更新时间,自己一旦忘掉,那么更新时间的意义也就荡然无存了,因此这里推荐第二种方法。
方法二:使用 git 推送时间
添加以下步骤:
1.解决文件名中文时导致无法正确读取日志
在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码。将git配置文件 core.quotepath项设置为false。quotepath表示引用路径,加上–global表示全局配置
git config --global core.quotepath false
添加前
添加后
- 将 clone 下来的文件的时间改成了该文件最近一次变动的推送时间
git ls-files --directory source | while read path; do touch -d "$(git log -1 --format=\'@%ct\' $path)" "$path"; done
Jenkinsfile步骤
1 | |
HEXO修复持续构建博客造成的更新时间错误
http://days.onross.com/37a7a5d5.html