解决Hugo文章路径含中文时无法获取GitInfo的问题
为了偷懒不用每篇文章都手动设置修改时间,我尝试使用 Hugo 内置的读取 GitInfo 的功能,在 lastmod
属性为空的情况下自动读取 git commit date
作为 lastmod
属性。
初步尝试
根据官方文档,在 toml 配置文件中设置好了参数。
|
|
生成网页后,却发现文章里显示的修改时间与文章发布时间相同,手动在文章属性里指定 lastmod
属性后才正确显示了修改时间。Hugo 没有正确读取到 git commit 的时间。
尝试生成时指定使用 git date,看看能不能解决问题,修改了一下网页生成模板,放入 {{ .GitInfo.AuthorDate }}
代码。结果在生成网页时弹出了含有以下语句的错误:
... at <.GitInfo.AuthorDate>: nil pointer evaluating *gitmap.GitInfo.AuthorDate
搜索问题
在 Google 上用相关关键词找了好久,都没有在英语圈中找到相关讨论。之后又在 Hugo 主题的 issue 中查找,终于发现了相关问题。
https://github.com/reuixiy/hugo-theme-meme/issues/27
解决
git config --global core.quotePath false
Git 设置 core.quotePath
为 false
后,Hugo 能够正确获取文章的 GitInfo
,使用 commit 时间作为文章修改时间输出了。
根据 Git 文档 的说明,core.quotePath
这项设置默认为 true
,此时 Git 处理文件路径时,会对中文等大于0x80字节的字符进行转义,变成类似 \302\265
的样子。
而我为了方便自己浏览和整理文章源文件,所有文章的文件名都是中文的,文章目录的结构如下。Hugo 用未转码的文章路径去寻找 Git 信息里转码后的路径,自然无法对应。
|
|
至此,问题解决,可以愉快地偷懒了!
Cloudflared Pages 问题
更新