如何使Sphinx从单个页面的源文件访问时间生成“最后修改”?

时间:2018-11-30 09:25:32

标签: python-sphinx

我正在使用狮身人面像和ReadTheDocs主题进行文档项目。源文件位于gitlab上的git仓库中,我使用自动测试来检查每次合并到master分支后文档是否正确构建。我能够将成功构建的html文件存储在gitlab上,并将它们同步到我的私有服务器。但是,由于文档始终是在自动测试期间从头开始构建的,因此页面上的“上次修改时间”标志始终位于页面的上次构建时。我想避免这种情况,并保持“ Last Modified”标志为真,即我希望它显示源.rst文件的实际上次修改时间。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

我知道我来晚了一些,但我刚刚创建了一个小的Sphinx扩展名,它从Git中获取了“最后修改时间”:

https://github.com/mgeier/sphinx-last-updated-by-git/

答案 1 :(得分:1)

我过去设法做到这一点的唯一方法是使用Git Attributes之类的东西。阅读此页面:

https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

特别是看看标题为“关键字扩展”的部分。

答案 2 :(得分:0)

基于Kevin Horn的回答,我在gitlab服务器上自动执行的构建脚本中添加了以下内容,以实现持续集成:

bigQueryReadOnly.json

这将添加或更新将任何.rst文件更改为最后一次提交的日期至.rst文件的末尾。如果自分支偏离master分支以来文件已更改且没有修改,则所做的更改将被安静地添加到提交中。提交将在gitlab的自动测试过程中失败,但这没关系,因为正确的日期已经存在于文件中,并且可以使用cronjob从服务器端将正确的html页面构建并同步到服务器。通过手动运行脚本以快速进行清理和重建,它将可以正常工作。

凯文·霍恩(Kevin Horn)提出的解决方案的问题在于,它仅在本地运行,因为您设置了git config以便每次提交时都会自动扩展变量; Hoewer,我必须强迫我的所有协作者做完全一样的事情,这就是为什么我选择这个选项。

答案 3 :(得分:0)

您可以使用rst的Date指令。

在第一个文件的顶部或底部,添加以下文本

.. |date| date::

Last Updated on |date|

在最终版本中,仅当源rst已更新时,此日期才会更新。

参考:https://faculty.math.illinois.edu/~gfrancis/illimath/windows/aszgard_mini/movpy-2.0.0-py2.4.4/manuals/docutils/ref/rst/directives.html#date