修复gitCI中文件的创建时间与修改时间

3 篇文章 0 订阅

前情提要

hexo发现经过CI之后,所有文章的 更新时间(mtime) 变成了CI运行的时间。

解决思路

在CI checkout代码时,使用文件最后一次涉及的commit时间作为文件的修改时间,进行mtime的恢复。

解决方案

# .github/workflows/action.yml
...
- uses: actions/checkout@v3
  # 如果使用的是GithubAction的actions/checkout,记得加上下面的内容,对仓库历史进行完整的签出
  with:
    fetch-depth: 0
# 恢复文件修改时间
- name: Restore file modification time
  run: |
    find source/_posts -name '*.md' | while read file; do touch -d "$(git log -1 --pretty="@%ct" -- $file)" $file; done
...

代码解释

# 列出需要恢复修改时间的文件
find source/_posts -name '*.md'
# 循环
# 使用 git log -- $file 得到该文件最后修改的commit 并且使用pretty选项获取时间戳
# 使用 touch -d 来将文件的atime以及mtime修改为commit的时间戳
while read file; do touch -d "$(git log -1 --pretty="@%ct" -- $file)" $file; done

由于部分文章审核的原因,一些内容可能不会在csdn发布,欢迎访问 SyraTi.ICU
以上!まいど~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值