Skip to main content

从 Git 获取每个 Sphinx 页面的“最后更新”时间

项目描述

这是一个小的Sphinx扩展,正是这样做的。它还检查包含的文件和其他依赖项,如果它是最近的,则使用它们的“最后更新”时间。对于每个文件,最后一次更改的 Git 提交的“作者日期”被视为其“最后更新”时间。未提交的更改将被忽略。

如果页面没有源文件,则其last_updated时间设置为None

html_last_updated_fmt的默认值从None更改为空字符串。

用法
  1. 安装 Python 包sphinx-last-updated-by-git

  2. “sphinx_last_updated_by_git”添加到conf.py中的扩展

  3. 跑狮身人面像!

选项
  • 如果 Git 没有跟踪源文件(例如,因为它是由autosummary_generate按需自动生成的)但它的依赖项是,则从它们中获取last_updated时间。如果您不希望这种情况发生,请使用git_untracked_check_dependencies = False

  • 如果 Git 未跟踪源文件,则其 HTML 页面不会获得源链接。如果您确实希望这些页面具有源链接,请设置 git_untracked_show_sourcelink = True。当然,在这种情况下 html_copy_sourcehtml_show_sourcelink也必须是True,并且您使用的主题必须首先支持源链接。

  • 默认情况下,时间戳使用本地时区显示。您可以使用配置选项git_last_updated_timezone指定datetime.timezone对象(或任何tzinfo子类实例) 。您还可以使用babel识别的任何字符串,例如 git_last_updated_timezone = 'NZ'

  • 默认情况下,“最后更新”时间戳作为 HTML <meta> 标签添加。这可以通过将配置选项 git_last_updated_metatags设置为False来禁用。

  • 通过将排除模式列表传递给配置选项 git_exclude_patterns ,可以从上次更新日期计算中排除文件。这些模式会在源文件和依赖项上进行检查,并以与 Sphinx 的exclude_patterns相同的方式处理。

  • 通过将提交哈希列表传递给配置选项git_exclude_commits ,可以从上次更新日期计算中排除单个提交。

注意事项
  • 当使用“Git 浅克隆”(带有--depth选项)时,可能没有检出长期未更改文件的“最后更新”提交。在这种情况下,last_updated时间设置为None (在构建过程中会显示警告)。

    这可能发生在https://readthedocs.org/上, 因为它们默认使用浅克隆。DONT_SHALLOW_CLONE功能标志应该解决这个问题

    如果您想摆脱警告,请在您的conf.py中使用它:

    suppress_warnings = ['git.too_shallow']
  • https://readthedocs.org/上使用默认主题 sphinx_rtd_theme的项目是在 2020 年 10 月 20 日之前创建的,日期将不会显示在页脚中。

    一种解决方法是启用(未记录的)功能标志 USE_SPHINX_LATEST

    另一种解决方法是通过包含以下内容的requirements.txt文件覆盖默认值:

    sphinx>=2
    sphinx_rtd_theme>=0.5

    另见问题#1

  • 从 Sphinx 5.0 版开始,确定依赖关系的方式发生了(很可能是无意的)变化。这可能会导致虚假的依赖关系,这意味着某些“最后更改”的日期可能是错误的。这有望在未来的 Sphinx 版本中得到修复。同时,可以使用 Sphinx 版本 4.5.0(带有 docutils 0.17.1)。

    另见问题#40

执照

BSD-2-Clause(与 Sphinx 本身相同),有关更多信息,请查看LICENSE文件。

类似的东西

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

sphinx-last-updated-by-git-0.3.4.tar.gz (8.5 kB 查看哈希)

已上传 source

内置分布

sphinx_last_updated_by_git-0.3.4-py3-none-any.whl (8.1 kB 查看哈希)

已上传 py3