forked from ccf-ai-infra/Intro-ops
4.0 KiB
4.0 KiB
如何为 intro-ops 提交第一个 PR
第一步:环境准备
Fork 仓库 + Clone
- 打开 https://github.com/metax/intro-ops ,点击右上角 Fork 按钮
- Clone 你 fork 的仓库:
git clone https://github.com/<你的用户名>/intro-ops.git cd intro-ops - 添加上游仓库(保持同步):
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 描述应包含:
- 做了什么(一句话概括)
- 为什么做(问题背景)
- 如何验证(跑过哪些测试、附上截图或测试输出)
- 关联 Issue(如有,用
Closes #123关联)
第五步:响应 Review
- Review 意见是改进代码的机会,不要抵触
- 如有不理解处,在 PR 评论区直接提问
- 修改后 push 到同一分支,PR 会自动更新
- 所有 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