ascend-boost-comm 贡献指南:基于 GitCode 的 Fork–PR 协作工作流全流程实战 📅 发布时间:2026/9/18 12:57:46 👁 浏览次数: ascend-boost-comm 贡献指南基于 GitCode 的 Fork–PR 协作工作流全流程实战【免费下载链接】ascend-boost-comm算子公共平台南向对接不同组织开发的算子库北向支撑不同加速库应用实现M x N算子能力复用项目地址: https://gitcode.com/cann/ascend-boost-comm本文以 ascend-boost-comm 仓库官方文档 GitCode Workflow 为主线系统讲解向该算子公共平台提交代码的完整协作流程从 Fork 个人分支、克隆与 SSH 配置、创建本地分支与本地构建验证到提交 Pull RequestPR、关联 Issue、通过 CI 门禁与代码检视以及回退提交、解决冲突、合并提交等高频实战操作。读完本文你将能够独立走通一次从云端 Fork到代码合入 master的完整贡献闭环并掌握与社区 CLA / CI 机器人协作的关键注意事项。1. 开展工作流前的准备在开始 GitCode 工作流之前需要确认以下两项基础条件安装 Git请先确保本机已经安装 Git 软件。关于 Git 的安装与基础用法可通过 Google、Baidu 等搜索引擎获取帮助。找到目标仓库ascend-boost-comm 是 Ascend 代码托管平台GitCode上的一个开源仓库其原始上游地址为https://gitcode.com/cann/ascend-boost-comm。后续所有 Fork、Clone、Upstream 操作都围绕该仓库展开。补充ascend-boost-comm 是 CANN 的算子公共平台南向对接不同组织开发的算子库北向支撑不同加速库应用实现 M × N 算子能力复用。项目官方约定的贡献三步流程为Fork 仓库 → 修改并提交代码 → 创建 Pull Request见 README_en.md。在正式开始前还建议先阅读 贡献指南其中要求贡献者先签署 CLAContributor License Agreement社区按 Corporate、Corporate Contributor、Individual、Enterprise Admin 四类提供签署入口未签署时 PR 会被打上ascend-cla/no红色标签详见第 9 节。2. 准备本地代码2.1 Fork 个人分支打开 ascend-boost-comm 项目的首页。点击页面右上角的Fork按钮按照指引在云端建立一个属于个人的 fork 分支。提示如果 Fork 失败通常是个人账号下已存在同名仓库GitCode 通过个人账号 仓库名寻址不允许同名仓库并存可先修改个人账号下已有仓库的名称和路径再重新 Fork见 常见问题。2.2 把 Fork 分支克隆到本地按以下步骤将 fork 仓库的代码下载到本机。① 创建本地工作目录便于后续代码的查找与管理mkdir ${your_working_dir}② 完成 Git 用户名和邮箱的全局配置若已配置过可跳过。将user.name设置为你的 GitCode 个人名称git config --global user.name your Gitcode Name git config --global user.email emailyour_email.com③ 完成 SSH 公钥注册若未注册后续每次推送都需要重新输入账号和密码生成 SSH 公钥ssh-keygen -t rsa -C your_emailexample.com cat ~/.ssh/id_rsa.pub登录 GitCode 账号添加公钥点击右上角个人头像进入个人设置在个人设置 → 安全设置 → SSH 公钥中将cat命令获取到的公钥内容添加到添加公钥区域。在本机完成 GitCode 的 SSH 注册验证ssh -T gitgitcode.com如果得到如下成功提示则表示 SSH 公钥已经生效Hi $user_name! Youve successfully authenticated, but GITCODE.COM does not provide shell access.④ 复制远程仓库到本地切换到本地工作目录cd $your_working_dir在需要下载的远程仓库首页单击克隆/下载获取$remote_link。克隆弹窗默认展示 HTTPS 与 SSH 两个标签页其中 HTTPS 方式需要创建个人访问令牌Token代替登录密码在本机执行如下命令先克隆你的 fork 仓库再为本地目录添加上游源原始仓库# 下载 fork 仓库到本地 git clone https://gitcode.com/$user_name/ascend-boost-comm.git # 设置本地工作目录的上游源原始仓库 git remote add upstream https://gitcode.com/cann/ascend-boost-comm.git说明origin指向你的个人 forkupstream指向社区主仓库。此后同步主仓库更新、创建 PR 都依赖这两个远程源请务必配置完整。2.3 拉分支先更新本地主分支使其与上游 master 保持一致git fetch upstream git checkout master git rebase upstream/master再创建本地个人开发分支git checkout -b myfeaturemyfeature为个人分支名称后续的代码编辑与修改都将在该分支上进行避免直接污染 master 分支。3. 本地构建与验证代码修改完成后需要在本地完成构建与验证。官方文档指向了 使用说明README_en.md 的 Usage Instructions 一节其中给出了两种典型应用场景这里摘录关键流程供贡献者参考。环境准备要点详见 环境设置编译依赖必需Python 3.10.x 或 3.11.x、cmake ≥ 3.20、gcc/g 建议 7.3.1-11.x若使用 GCC ≥ 12编译命令需追加--no_werror项目默认开启-Werror见 cmake/host_config.cmake。运行示例/测试依赖仅编译运行示例和测试时需要PyTorch ≥ 2.1.0 及与之匹配的 torch_npu。场景一单算子项目验证以 example/ops/addcustom 下的 addcustom 算子为例。首次编译需先编译 testframework再编译 examplecd ascend-boost-comm bash scripts/build.sh testframework bash scripts/build.sh example source output/mki/set_env.sh然后运行算子测试用例python example/tests/pythontest/optest/test_addcustom.py运行前请确保已执行source output/mki/set_env.sh且 CANN / NPU 驱动环境可用。若要开发自己的自定义算子可参考 自定义算子开发示例 以及示例算子的算子实现 addcustom_operation.cpp 与测试用例 test_addcustom.py。场景二随加速库一起编译打包将 ascend-boost-comm 与加速库如 Ascend Transformer Boost放在同级目录先用算子命名空间作为参数编译 ascend-boost-comm 并把输出拷贝到加速库的 3rdparty 目录再编译加速库即可。补充编写代码时请遵守 代码提交规范AscendC 相关代码使用驼峰命名CCE intrinsic 相关变量使用小写字母加下划线类名使用大驼峰目录和文件名使用小写字母加下划线且内容需与文件中的主类或主接口保持一致。同时新增源码文件如.cpp、.cc、.h、.py、.sh需在文件头部添加 CANN Open Software License Agreement Version 2.0 的版权声明模板见 贡献指南。4. 保持分支与 master 同步在开发过程中主仓库 master 可能不断有新代码合入。为保证分支始终基于最新代码需要在myfeature分支上执行# 在 myfeature 分支上执行 git fetch upstream git rebase upstream/master注意事项合并同步时不要使用git pull替代上述fetchrebase组合因为git pull默认的 merge 行为会使提交历史变得混乱增加代码理解与检视的难度。如果确实希望保留git pull的用法可以通过修改.git/config文件改变git pull的默认行为git config branch.autoSetupRebase always5. 在本地工作目录提交变更提交你的变更git add . git commit -m 提交内容描述如果在前一次提交的基础上继续编辑、构建并测试了更多内容可以使用--amend将新改动追加到上一次提交git commit --amend补充根据 代码提交规范MRPR统一标题格式建议为[bug/feature/task] Fix XX issue / Add XX feature / Rectify XX issue提交说明中应简要描述需求来源、修改内容等涉及接口变更时需特别说明并与上游组件同步。另外commit 中使用的邮箱必须与 GitCode 提交邮箱一致否则会触发ascend-cla/no标签详见第 9 节。6. 将变更推送到远端 fork 仓库当改动准备进入评审或只是想建立一份远端备份时把分支推送到你在 GitCode 上的 fork 仓库git push -f origin myfeature说明这里使用-fforce是因为经过rebase重写后的提交历史与远端不一致需要强制推送覆盖。仅在个人 fork 分支上使用-f是安全的但不要对多人共享的分支随意强推。7. 在 GitCode 上创建 Pull Request访问你在https://gitcode.com/$user/ascend-boost-comm的 fork 仓库页面单击右上角的 Pull Request或 新建 Pull Request按钮。在创建新 PR 的界面中确认源分支source和目标分支target源分支是你的myfeature个人分支目标分支通常是上游主仓库的master确认无误后创建 PR。提交 PR 是对项目主分支的一次合并操作为保证合并质量请谨慎操作提交前确保本地构建与测试已通过提交信息清晰规范。8. 将 Pull Request 与处理的 Issue 进行关联访问仓库的Issues列表进入本次 PR 所处理的对应 Issue 页面。在 Issue 右侧的Pull Requests区域选择你提交的 PR 进行关联。完成关联后当该 PR 被合并时关联的 Issue 会被自动关闭。补充关于 Issue 的提交与处理可参考 Issue 提交指南在仓库 Issue 板块单击新建 Issue按诉求选择 Issue 类型并按照系统模板详细填写标题与内容后创建即可无需填写负责人仓库接口人会定时审视并按类型分配。如果你想认领某个 Issue在评论区输入/assign或/assign yourself即可将 Issue 指派给自己见 贡献指南。9. 查看门禁状态与代码检视意见查看门禁CI状态PR 提交后在 PR 评论区输入/compile触发门禁检查。检查时间因仓库而异请持续关注检查状态并及时修改暴露的问题。当页面显示CI 任务执行成功且 PR 右上角标签显示ci-pipeline-passed时表示门禁检查通过如果门禁检查任务中有任务失败可点击对应日志详情中的点击跳转在日志中查看失败原因并据此调整代码。补充根据 常见问题如果 PR 提交后迟迟未触发 CI通常有两种原因一是网络或任务调度导致 webhook 通知延迟此时在 PR 评论区评论/retest可重新触发二是仓库刚创建不久、Jenkins 侧尚未建立构建工程此时/retest不生效需等待系统自动创建工程。查看代码检视意见门禁检查通过后PR 会被分配给一个或多个检视者。检视者会进行彻底的代码检视以确保提交的正确性——不仅包括代码本身也包括注释和文档。你可以在 PR 列表中找到自己提交的 PR并查看针对该 PR 的评论和评审意见。补充PR 页面上的常见状态标签含义如下详见 常见问题ascend-cla/no红色PR 包含未签署 CLA 的贡献者的 commit。CLA 检查基于 commit 信息邮箱验证若 commit 邮箱与 GitCode 提交邮箱一致直接用该邮箱签署 CLA 即可若不一致可在 GitCode 个人设置中添加并设置提交邮箱或通过git config --global user.name/user.email调整本地 commit 邮箱后重新签署。ascend-cla/yes绿色CLA 已签署合规。ci-pipeline-passed绿色CI 流水线通过。存在冲突红色PR 与主仓库存在冲突需按常用操作 → 处理提交冲突解决。此外社区合入代码依赖评审流程非 maintainer 贡献者不能直接向仓库包括保护分支与非保护分支push 代码maintainer 对非保护分支可直接 push但对保护分支也只能通过评论由 CI-bot 代为合入。通过评论/lgtm、/approve合入可以保证一份代码至少获得提交者以外一位 maintainer 的评审同意。常用操作回退一个提交如果想回退提交请按以下步骤操作。注意如果你具有上游主仓库写权限请不要使用 GitCode UI 上的Revert按钮创建 PR——GitCode 会在主仓库而不是你的 fork 中创建 PR 分支带来不必要的风险。创建一个分支并用 upstream 同步# 创建分支 git checkout -b myrevert # 用 upstream 同步分支 git fetch upstream git rebase upstream/master根据待回退提交的类型执行对应命令merge commit合并提交# SHA 为待回退的 merge commit 的哈希值 git revert -m 1 SHAsingle commit普通单条提交# SHA 为待回退的单条提交的哈希值 git revert SHA回退会生成一个新的提交将其推送到你的远程工作目录git push ${your_remote_name} myrevert基于该分支创建一个 PR 即可。处理提交冲突当 PR 上出现存在冲突标记时说明你的 PR 与主仓库当前代码存在冲突需要处理。先将分支切换到 master 上并完成 master 的 rebasegit checkout master git fetch upstream git rebase upstream/master再切换到你的工作分支并开始 rebasegit checkout yourbranch git rebase master此时 Git 会输出冲突提示可以通过vi等工具查看冲突内容并手工解决。冲突解决后把修改提交上去git add . git rebase --continue git push -f origin yourbranch合并提交Squash提交 PR 后如果根据检视意见完成修改并再次提交不想让审阅者看到多次提交记录多次提交不便于继续在检视中修改可以压缩squash提交将多个 commit 合并为一个。先在本地分支上查看日志git log将顶部的 n 个提交记录聚合到一起n 为数字git rebase -i HEAD~n把需要压缩的日志前面的pick都改成ssquash 的缩写。注意必须保留至少一个pick——如果所有pick都改成了s就没有了合并的目标会发生错误。修改完成后按ESC键再输入:wq保存退出。此时会跳出一个界面询问是否进入编辑提交备注的页面输入e进入合并提交备注的编辑页。请把需要合并的备注都删掉只保留合并目标的备注然后按ESC键输入:wq保存退出。最后完成推送git push -f origin yourbranch回到 GitCode 上的 PR 提交页面查看即可看到之前的多次提交已合并为一次。至此你已经掌握了 ascend-boost-comm 项目从 Fork、克隆、建分支、本地构建验证到提交 PR、关联 Issue、通过 CI 门禁与代码检视以及回退提交、解决冲突、合并提交的完整 GitCode 协作工作流。这套流程同样适用于 CANN 社区其他开源仓库的代码贡献建议在实操中配合 贡献指南、代码提交规范 与 常见问题 一起查阅确保提交规范、合规且顺利合入。【免费下载链接】ascend-boost-comm算子公共平台南向对接不同组织开发的算子库北向支撑不同加速库应用实现M x N算子能力复用项目地址: https://gitcode.com/cann/ascend-boost-comm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考