为 ansible-pylibssh 做贡献¶
注意
ansible-pylibssh 项目仅为了允许 Ansible 连接插件通过在 Python 中导入来使用 libssh SSH 实现而存在。目前,我们不接受任何与该目标无关的贡献或功能请求。
但如果你想贡献错误修复或发送拉取请求来改进我们的 CI、测试和打包,我们将很乐意审核。
为了做出贡献,你需要
Fork 仓库。
创建一个分支,将你的更改推送到该分支。别忘了 包含变更日志的新闻文件.
将其作为 PR 发送给我们。
迭代你的 PR,包含请求的改进并参与讨论。
先决条件
另请参阅
- 测试指南
在本地运行测试套件
贡献文档¶
我们使用 Sphinx 生成我们的文档网站。你可以通过执行以下命令在本地触发该过程
$ tox -e build-docs
它也与 Read The Docs 集成,后者会构建并发布主分支上的每个提交,并为每个拉取请求生成实时文档预览。
Sphinx 文档的来源使用 reStructuredText 作为事实上的标准。但为了使文档贡献对初学者更友好,我们集成了 MyST 解析器,允许我们也接受用 Markdown 的扩展版本编写的新的文档,该版本支持使用 Sphinx 指令和角色。 阅读文档 以了解更多有关如何使用它的信息。
在你的 PR 中添加更改说明¶
维护软件更新到新版本对最终用户的影响的新闻日志非常重要。这就是为什么我们根据 Towncrier 的理念 强制在拉取请求中收集更改片段文件。
其理念是,当有人进行更改时,他们必须记录会影响最终用户的部分,仅包括对他们有用的信息。然后,当维护者发布新版本时,他们将自动使用这些记录为相应的版本编写变更日志。重要的是要理解,包含不必要的低级实现相关细节会产生噪音,这些噪音在大多数情况下对最终用户并不特别有用。因此,此类细节应记录在 Git 历史记录中,而不是变更日志中。
好的!那么如何添加新闻片段呢?¶
要提交有关你的 PR 的更改说明,请在 docs/changelog-fragments/
文件夹中添加一个文本文件。它应该包含一个说明,解释应用此 PR 将如何改变最终用户与项目交互的方式。通常一句话就足够了,但请随意添加你认为对用户理解其含义必要的任何细节。
使用过去时编写片段中的文本,因为与其他片段组合在一起时,它将成为“新闻摘要”的一部分,告诉读者自上一个版本以来,库的特定版本中发生了哪些变化。你也可以使用reStructuredText 语法来突出显示代码(内联或块)、链接文档的部分或外部站点。但是,你不需要在此处引用问题或 PR 编号,因为towncrier 在渲染新闻文件时会自动添加对所有受影响问题的引用。如果你想签署你的更改,请随意在末尾添加 -- by :user:`github-username`
(将 github-username
替换为你自己的用户名!)。
最后,按照 Towncrier 理解的约定命名你的文件:它应该以问题或 PR 的编号开头,后面跟着一个点,然后添加一个补丁类型,比如 feature
、doc
、contrib
等,最后添加 .rst
作为后缀。如果你需要添加多个片段,你可以在类型和后缀之间添加一个可选的序列号(用另一个点分隔)。
通常,名称将遵循 <pr_number>.<category>.rst
模式,其中类别为
bugfix
: 对我们认为是不正确的、不期望的行为的错误修复,该行为已在发布中得到纠正,以符合预先商定的预期。feature
: 新的行为、公共 API。这类东西。deprecation
: 声明未来 API 移除和行为变更。breaking
: 当公共内容以破坏性的方式被移除时。可能在早期版本中被弃用。doc
: 对文档结构或构建过程的显著更新。packaging
: 针对下游的关于不明显副作用和工具的说明。测试调用注意事项和运行时假设的更改。contrib
: 影响贡献者体验的内容。例如,运行测试、构建文档、设置开发环境。misc
: 很难归入上述任何类别的更改。
一个拉取请求可能包含多个这些组件,例如,代码更改可能会引入一项新功能,该功能会弃用旧功能,在这种情况下,应添加两个片段。没有必要为伴随相关代码更改的文档更改单独创建文档片段。
用于向你的拉取请求添加变更日志条目的示例¶
文件 docs/changelog-fragments/112.doc.rst
(可以符号链接到 docs/changelog-fragments/112.contrib.rst
以便它显示在多个变更日志部分中)
Added a ``:user:`` role to Sphinx config -- by :user:`webknjaz`.
This change allows the contributors to be credited for their submitted
patches in a more prominent manner.
文件 docs/changelog-fragments/105.feature.rst
Added the support for keyboard-authentication method -- by :user:`Qalthos`.
文件 docs/changelog-fragments/57.bugfix.rst
Fixed flaky SEGFAULTs in ``pylibsshext.channel.Channel.exec_command()``
calls -- by :user:`ganeshrn`.
提示
请参阅 pyproject.toml
以查看所有可用类别 (tool.towncrier.type
)。