Intro-ops/docs/how-to-submit-first-pr.md

4.0 KiB
Raw Permalink Blame History

如何为 intro-ops 提交第一个 PR

第一步:环境准备

Fork 仓库 + Clone

  1. 打开 https://github.com/metax/intro-ops ,点击右上角 Fork 按钮
  2. Clone 你 fork 的仓库:
    git clone https://github.com/<你的用户名>/intro-ops.git
    cd intro-ops
    
  3. 添加上游仓库(保持同步):
    git remote add upstream https://github.com/metax/intro-ops.git
    

配置开发环境

# 创建 conda 环境
conda create -n intro-ops python=3.12 -y
conda activate intro-ops

# 安装 Python 依赖
pip install -r requirements.txt

构建并验证基线

# NVIDIA 后端构建
bash scripts/build_nvidia.sh configure
bash scripts/build_nvidia.sh build

# 跑一遍全部测试,确保基线通过
PYTHONPATH=python:. CAMP_BUILD_DIR=build-nvidia python tests/run_ops.py --op all --backend nvidia --mode test

如果基线测试全部通过,说明环境配置正确,可以开始贡献。


第二步:选择你的贡献

在仓库的 Issues 页面,按标签筛选适合你的任务:

推荐的新手任务good-first-issue

类型 预计耗时 示例
修复文档错别字/格式问题 15-30 min 修正 README 中的拼写错误
补充测试用例 1-2 h 为某个算子增加 corner case 测试
添加代码注释 30 min 给关键算法步骤补充注释
翻译文档段落 1-2 h 将中文文档翻译为英文(或反过来)
补充 FAQ 条目 30 min 把你遇到并解决的问题写成 FAQ

不知道怎么选?

  • 在 Issue 下留言询问
  • 或者先读一遍文档,过程中发现任何可改进的地方记录下来
  • 首次贡献从最小的事情做起,熟悉流程比贡献大小更重要

第三步:开发和自测

创建分支

git checkout -b fix/your-description
# 分支命名建议:
# fix/xxx   — 修复
# feat/xxx  — 新功能
# docs/xxx  — 文档
# test/xxx  — 测试

修改代码并本地验证

  • 文档类:修改后确认 Markdown 渲染正常
  • 代码类:修改后跑相关测试确保不引入回归:
    PYTHONPATH=python:. CAMP_BUILD_DIR=build-nvidia pytest tests/op_tests/test_copy.py -v --backend nvidia
    

代码风格

  • C++ 代码:用 clang-format 格式化
  • Python 代码:用 black + isort 格式化

第四步:提交 PR

Commit 规范

git add <修改的文件>
git commit -m "docs: fix typo in README"
# commit message 格式:<类型>: <简短描述>
# 类型docs / fix / feat / test / refactor

推送并创建 PR

git push origin fix/your-description

然后在 GitHub 上打开你的仓库,点击 Compare & pull request 按钮。

填写 PR 描述

一个好的 PR 描述应包含:

  1. 做了什么(一句话概括)
  2. 为什么做(问题背景)
  3. 如何验证(跑过哪些测试、附上截图或测试输出)
  4. 关联 Issue(如有,用 Closes #123 关联)

第五步:响应 Review

  1. Review 意见是改进代码的机会,不要抵触
  2. 如有不理解处,在 PR 评论区直接提问
  3. 修改后 push 到同一分支PR 会自动更新
  4. 所有 Review 意见解决后reviewer 会合并

合并之后

  • 你的名字将出现在仓库的贡献者列表中
  • 可以把你解决问题的经历写成经验分享blog 或 Discussions
  • 继续探索更多贡献类型,挑战更难的任务

常见问题

Q: 我的 PR 迟迟没人 review 怎么办? A: 通常 48h 内会有人响应。如果超时,可以在 PR 评论区 @ 仓库维护者。

Q: 我不确定我的修改是否有价值? A: 可以先开一个 Issue 描述你的想法,得到确认后再动手。

Q: 合并后有冲突怎么办? A: 将上游 main 合并到你的分支:

git fetch upstream
git merge upstream/main
# 解决冲突后 git push