ZanderZhao/gitbook-action

`修订时间` 的显示问题

Closed this issue · 8 comments

您好,首先特别感谢您开发本Action工具,我使用后感觉非常好用,但是有一个小问题的,git push --force_book中的所有文件强制推送到gh-pages分支后,导致所有页面页脚处显示的修改时间都会变化,而不是只修改特定的网页,请问如何解决?
不好意思,我是小白,提的问题比较小儿科,望能帮忙解决。

您好,首先特别感谢您开发本Action工具,我使用后感觉非常好用,但是有一个小问题的,git push --force_book中的所有文件强制推送到gh-pages分支后,导致所有页面页脚处显示的修改时间都会变化,而不是只修改特定的网页,请问如何解决?
不好意思,我是小白,提的问题比较小儿科,望能帮忙解决。

你好,Github Action可能无法直接解决,因为每次action运行都是clone一份文件,而文件的创建日期就是clone的那一时刻,以tbfed-pagefooter为例,这一类插件判断最后修改历史是根据.md源文件的修改历史,就是action clone的那一时刻,所以所有网页的页脚修改时间就会变成clone的时间。

目前解决的思路有:

  • 每次把源文件打成压缩包,action把压缩包解压,则文件改动日期不变,但是二进制文件对git不友好,不推荐
  • 修改插件实现逻辑1,可以在每一篇文章前面用yml手动添加最近修改时间字段,插件根据该字段输出最近编辑,而不是自动判断,优点是自主可控,缺点是gitbook本来就是偏向页数较多的,工作量较大
  • 修改插件实现逻辑2,使用github接口判断每次更新的文件,实现难度较大,官方更新接口改动工作量较大
  • 本地直接生成网页,将源文件和_book一起push到github,触发action将_book分离出来,自动push到gh-pages

  git ls-tree -r --name-only HEAD | while read filename; do
    touch -d  "$(git log -1 --pretty=format:"%ai"  -- $filename )"  $filename ;
  done

在v1.2.2+版本里面使用选项source_edit_time: true即可,参见example1

谢谢解惑,我之前一直用的是类似第四种的解决方案,本地写了个 batch,自动 build 并将 _book 里的文件 pushgh-pagesgitbook 源文件只留在本地。

第二三中方案看起来比较麻烦,就不折腾了🙃

谢谢解惑,我之前一直用的是类似第四种的解决方案,本地写了个 batch,自动 build 并将 _book 里的文件 pushgh-pagesgitbook 源文件只留在本地。

第二三中方案看起来比较麻烦,就不折腾了

你好,git log也可以实现,上面的已经更新了

谢谢解惑,我之前一直用的是类似第四种的解决方案,本地写了个 batch,自动 build 并将 _book 里的文件 pushgh-pagesgitbook 源文件只留在本地。
第二三中方案看起来比较麻烦,就不折腾了

你好,git log也可以实现,上面的已经更新了

您好,感谢更新,我的测试结果是仍然没能解决,这是我的测试仓库,麻烦您帮忙看一下,仍然是变动一个文件后,gh-pages 里所有的页面都会变化

谢谢解惑,我之前一直用的是类似第四种的解决方案,本地写了个 batch,自动 build 并将 _book 里的文件 pushgh-pagesgitbook 源文件只留在本地。
第二三中方案看起来比较麻烦,就不折腾了

你好,git log也可以实现,上面的已经更新了

您好,感谢更新,我的测试结果是仍然没能解决,这是我的测试仓库,麻烦您帮忙看一下,仍然是变动一个文件后,gh-pages 里所有的页面都会变化

你好,在v1.2.2已经修复,再试一下

谢谢解惑,我之前一直用的是类似第四种的解决方案,本地写了个 batch,自动 build 并将 _book 里的文件 pushgh-pagesgitbook 源文件只留在本地。
第二三中方案看起来比较麻烦,就不折腾了

你好,git log也可以实现,上面的已经更新了

您好,感谢更新,我的测试结果是仍然没能解决,这是我的测试仓库,麻烦您帮忙看一下,仍然是变动一个文件后,gh-pages 里所有的页面都会变化

你好,在v1.2.2已经修复,再试一下

大佬您好,十分感谢您的无私奉献,目前修订时间的显示问题已经修复!

但是,v1.2.2 还存在一个小小的问题,也就是 CNAME 文件的丢失,导致 Github Pages 指向的域名无法打开,哪怕我手动在 gh-pages 分支创建 CNAME 文件,该文件也会在下一次 Action 后被删除。

而这个问题在之前的版本中并没有出现,还希望您能在百忙之中抽时间修复此问题。

忘记说了

添加CNAME

  • 请在.yml文件里面添加publish_cname: www.example.com
  • 注意:
    • :后面域名中间有空格
    • 可以添加多个域名,中间用空格隔开publish_cname: example.com www.example.com

考虑到

  • 这个action可以把不是自己的项目clone过来然后build
  • 这样就会有一个问题,如果原来项目就有CNAME,到新的项目里面就会报错

所以这个action会

  • 把原有的CNAME删除了
  • 如果有在.yml设置CNAME,会自动创建,并放在根目录

忘记说了

添加CNAME

  • 请在.yml文件里面添加publish_cname: www.example.com

  • 注意:

    • :后面域名中间有空格
    • 可以添加多个域名,中间用空格隔开publish_cname: example.com www.example.com

考虑到

  • 这个action可以把不是自己的项目clone过来然后build
  • 这样就会有一个问题,如果原来项目就有CNAME,到新的项目里面就会报错

所以这个action会

  • 把原有的CNAME删除了
  • 如果有在.yml设置CNAME,会自动创建,并放在根目录

哦哦,大佬深思熟虑,十分感谢 👍