Shortcuts

Github 的使用

本节将对 Github 中的 issue & pull request 进行介绍。

1. 从模板创建

issue 和 pr 都有自己的模板。

issue 需要选择类别,确保已经阅读过文档和之前的 issue 和 pr,并指明版本号、操作系统,然后才是正式描述这个 issue。详细见下:

  • I have marked all applicable categories (我已经标注了所有适用类别):

    • exception-raising bug (引发异常的错误)

    • RL algorithm bug (RL算法错误)

    • system worker bug (系统组件错误)

    • system utils bug (系统工具错误)

    • code design/refactor (代码设计/重构)

    • documentation request (文档请求)

    • new feature request (新功能请求)

  • I have visited the readme and doc (我已经阅读了 readme 和文档)

  • I have searched through the issue tracker and pr tracker (我已经浏览了所有 issue 和 pr)

  • I have mentioned version numbers, operating system and environment, where applicable: (我描述了版本号、操作系统和环境,它们可以从下述代码得到)

    import ding, torch, sys
    print(ding.__version__, torch.__version__, sys.version, sys.platform)
    

pr 的模板中,Description 用于描述当前 pr 的作用和功能,Related Issue 用于列出相关的 issue,TODO 用于列出目前还没有完成的工作。

此外,还有一个 Check List 用于确保融合了源分支并解决冲突,通过代码风格检查,通过所有测试。详细见下:

  • merge the latest version source branch/repo, and resolve all the conflicts (合并最新版本的源分支/仓库,并解决所有冲突)

  • pass style check (通行代码风格检查)

  • pass all the tests (通过所有测试)

pr 的命名规范可以参考 git commit 章节。此外,如果当前 pr 仍在开发中,可以在 pr 名字的开头加上WIP:标记,它是 Work In Progess 的缩写。

2. 设置 Label 和 Milestone

每个 issue 和 pr 都需要被打上标签label,并注明相关的重要时间节点 milestone,milestone 的意义是追踪每个具体任务对应的中长期目标,二者需要在界面的这个位置进行指定:

../_images/github_label_milestone.png

DI-engine repo 中目前支持以下 label:

../_images/github_label1.png ../_images/github_label2.png

目前的 milestone 支持:

../_images/github_milestone.png

3. PR 的 Github Actions

../_images/github_actions_all.png

GitHub actions 是一种持续式集成,用于自动化完成各种任务。DI-engine 中主要使用 actions 进行各种测试(算法测试、平台测试、风格测试、单元测试等),只有当一个 pr 通过了所有必要的测试,它才可以被 merge。假如有 actions 没有通过,pr 会显示如下图:

../_images/github_actions_all.png

此时就需要点击 Details 进入查看具体失败原因。如果本地可以通过测试,但 CI 不通过,可以尝试 rerun:

../_images/github_actions_rerun.png

Note

如果还想进一步了解,可以移步教程

4. PR 的 Code Review

PR review 需要从以下五个角度去看:代码风格,算法原理,计算效率,接口易用性,兼容性。任何问题都可以提 comment。推荐每天抽出一定时间看看 github 上的 PR 看看整个开发社区在做什么,有什么可以学习或者互相提升的地方。

如果需要 review 别人的 PR,一般有两种评论的方式:

一是直接在 pr 的 conversation 中评论,通常是针对整体进行评论,如下图:

../_images/github_review11.png ../_images/github_review12.png

二是针对具体某行或某段代码进行评论,可以在 Files Changed 中点击加号新建评论,如下图:

../_images/github_review2.png

Note

一般来讲,一个 PR 的工作流程如下:

  1. 在 discussion 中进行讨论,某人总结并提了 issue,开发者现在需要针对 issue 进行开发

  2. 在 github 提 Pull Request

  3. 代码开发

  4. 分配给某人进行 code review,解决他人提出的问题,完成所有的开发工作

  5. merge 最新源分支(一般是 main)并解决冲突,保证通过 github CI,最终等待被合并