HEXO修复持续构建博客造成的更新时间错误
当使用自动化部署时,发现部署成功后,所有文章的更新时间都变成了此次提交修改的时间,但有些文章在上一次提交后是没有发生过任何修改的。
这是因为git
在推送更新时,并不记录保存文件的访问时间、修改时间等元信息,(原因在这里)所以每次使用git
把项目clone
下来时,文件的时间都是克隆时的时间。又因为如果没有在front-matter
中指定updated
,Hexo
会默认使用文件的最后修改时间作为文章的更新时间,所以会出现所有文章的更新时间都发生变化的情况。
总的来说,使用git clone
下来的文件的时间都不是原来文件的时间,而自动化部署每次都需要clone
源码才能进行后面的生成和部署操作,所以目前如果想正确显示更新时间。需要:
方法一:使用 updated 属性字段
在文章中的front-matter
中添加updated
: 更新时间项
1 | title: 修复 CI 构建博客造成的更新时间错误 |
以后修改文件的话也只需修改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 | stage('解决使用CI时,文章更新时间出现问题') { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 樂依博客!
评论