GitHub 上的 IPython#

注意

这是从旧的 IPython wiki 直接复制过来的,目前正在开发中。开发指南的这一部分中的许多信息已经过时。

关于使用 GitHub 的注意事项

里程碑#

  • 100% 的已确认问题应有一个里程碑。

  • 一个问题在没有里程碑的情况下绝不应该被关闭。

  • 所有拉取请求都应有里程碑。

  • 所有已关闭的问题应标记为下一个发布里程碑、下一个回退里程碑或 无操作

  • 未解决的问题应该只有在以下情况下才缺少里程碑:

    • 需要更多澄清 (标签: needs-info)

  • 通常,会有四个带有开放问题的里程碑:

    • 下一个次要版本。这个里程碑包含的问题应该被移植到下一个次要版本中。有关移植的信息,请参见 下方

    • 下一个主要版本。这应该是所有问题的默认里程碑。随着发布时间的临近,问题可以明确地提升到下一个发布版本 + 1。

    • 下一个主要版本 + 1。只有我们确信不会包含在下一个版本中的问题才会放在这里。这个里程碑应该在接近发布时大部分是空的。

    • 愿望清单。这是我们目前没有立即解决计划的问题的里程碑。

  • 剩余的里程碑是针对那些不需要采取行动的已打开或已关闭的问题,采取 不采取行动 的策略:

    • 并非实际问题(例如:问题、讨论等)

    • 现有问题的重复

    • 关闭,因为我们不会修复它

    • 当一个问题以 无行动 关闭时,这意味着该问题将不会被修复,或者它根本就不是一个问题。

  • 当关闭一个问题时,它应该总是有一个这样的里程碑之一:

    • 下一个小版本 因为该问题已得到解决

    • 下一次主要发布 因为问题已经得到解决

    • 无操作 因为该问题 不会 被处理,或者它是一个重复/非问题。

一般来说:如果有疑问,标记为 下一个版本。当我们接近某个版本时,我们总是可以推迟。

标签和问题#

问题一旦确认后应始终标记(对于仍在澄清中、可能是重复的或根本不是问题的问题则不需要)。

一些重要的标签:

  • needs-info: 问题需要提交者提供更多信息,才能继续处理

  • bug: 错误被引发,或出现意外行为

  • enhancement: 非错误的改进

  • backport-X.Y.Z: 此问题的任何修复都应回溯到维护分支。回溯通过里程碑表示,从2.1开始。

  • prio-foo: 用于排序问题的优先级 - 非必需,但 prio-high/low 对于明确提升/降低问题非常有用,尤其是在接近发布时。

  • ClosedPR: 此问题是对因过时而关闭的PR的提醒。

  • sprint-friendly: 显而易见或容易修复的问题,其中

所有确认的问题至少应有一个 bugenhancement 标签,并且应标记任何受影响的组件(例如 parallelqtconsolehtmlnotebook),或者如果我们有适当的标签,应标记特定的错误来源(例如 py3kunicode)。

sprint-friendly 标签可能是新贡献者开始的最佳位置。

拉取请求#

  • 所有工作通过拉取请求提交。

  • 一旦有值得讨论的代码,就可以提交拉取请求(Pull Requests)。拉取请求跟踪分支,因此您可以在提交PR后继续工作。审查和讨论可以在工作完成之前就开始,讨论越多越好。最坏的情况是PR被关闭。

  • 停滞的Pull Requests应被关闭(参见[[我们关于关闭PR的政策|Dev: 关闭Pull Requests]])

  • 拉取请求应始终针对主分支进行(回退PR的描述如下)。

  • 如果可行,拉取请求应进行测试:

    • bug修复应包括回归测试

    • 新行为至少应进行最小程度的练习

Travis 在测试 IPython 和 Pull Requests 方面做得相当不错,但手动执行测试(可能使用我们的 test_pr 脚本)可能是有意义的,特别是对于影响 IPython.parallel 或 Windows 的 PR。

打开一个问题#

在开启一个新问题时,请采取以下步骤:

  1. 在GitHub和/或Google上搜索您的问题,以避免重复报告。针对您的错误消息进行关键词搜索最为有用。

  2. 如果可能,请尝试更新到主分支并重现您的问题,因为我们可能已经修复了它。

  3. 尝试包含一个最小的可复现测试用例

  4. 包含相关系统信息。从以下输出开始:

    python -c "import IPython; print(IPython.sys_info())"
    

并根据问题包含任何相关的包版本,例如 matplotlib、numpy、Qt、Qt 绑定(PyQt/PySide)、tornado、网络浏览器等。

回溯移植#

  • 我们应该为从主分支回溯修复保留一个 A.x 维护分支。

  • 该分支应称为 A.x,例如 2.x,而不是 2.1。这样,每个发布系列只有一个维护分支。

  • 当一个议题被确定为适合回溯时,它应该被标记为 A.B 里程碑。

  • 任何解决回溯问题的拉取请求也应获得相同的里程碑。

  • 补丁会被回溯应用到维护分支上,方法是先将拉取请求的补丁应用到维护分支(目前使用 backport_pr 脚本)。