用途
glab-mr 是一个通过 /glab-mr 命令主动调用的技能,用于准备或发布 GitLab 合并请求(MR)。它按用户指定的范围工作:只要求草稿时,流程以在本地准备好草稿结束;用户明确要求推送并创建 MR 时,才执行这些步骤;该技能不授权合并。
主要能力
- 解析仓库上下文与用户意图:检查仓库说明、
git status --short --branch、git remote -v、git branch -a、git log --oneline -10,确认托管服务与项目,仅适用于 GitLab。 - 在已安装 git-flow 技能时沿用其仓库约定;单独使用时,从用户明确指令、仓库说明、已验证的远程分支与 MR 历史中确定源分支、目标分支与提交风格,不假设 develop、origin、工单前缀或统一提交格式。
- 在创建 MR 前获取相关引用并检查同一源分支与目标分支组合下已有的 MR,复用已打开且匹配的 MR;若先前 MR 已合并,则只隔离剩余的请求改动。
- 检查仓库的 MR 模板与现有描述,根据完整已验证的 MR 改动与工单上下文推断标题和描述;使用用户指定的 assignee 或 reviewer,否则使用仓库默认值;没有依据时省略可选指派,并在指派前核实用户名。
- 选择与验证改动:读取未暂存、已暂存差异及未跟踪文件,只暂存明确路径或代码块,保留无关工作;排除密钥、环境文件与本地开发配置,除非用户明确纳入经过审查的安全改动。
- 运行仓库要求的检查与相关测试,记录实际结果、失败项与无法运行的检查,在发布前解决范围内失败,不静默绕过钩子或声称未运行的检查通过。
- 按仓库观察到的提交风格提交(必要时),在提交前确认暂存差异,钩子失败时检查是否已生成提交并修复后重试,保留已发布历史。
- 在准备或更新标题和正文前应用 MR 描述指南,准备好最终标题、描述、源分支与目标分支、范围摘要和验证结果;发布前用
git log --oneline <remote>/<target>..HEAD、git diff --name-status <remote>/<target>...HEAD、git diff --check <remote>/<target>...HEAD验证。 - 只推送选定的工作分支,使用已安装的 glab 命令帮助确认支持的创建或更新选项,显式传入源分支与目标分支;多行描述以临时文件或结构化 API 正文提交,保留换行,符合描述指南与仓库模板,移除未使用的可选部分和示例占位符。
- 创建前再次检查是否已有匹配 MR,更新已有打开的 MR 而不是新建重复项;更新前重读当前描述以保留并发的人工编辑、附件与无关内容;在不丢失作者上下文的前提下解决冲突,保留人工评审讨论。
- 完成后重读创建或更新的 MR,比对项目、源分支、目标分支、head SHA 与改动文件范围,核对标题与正文、工单与附件链接、验证声明,读取流水线与检查状态;结果不确定时先检查远程与已有 MR 再重试写入。返回 MR URL、分支对、提交结果、检查情况以及待处理的 CI 或未解决失败。推送成功或创建 MR 成功不代表 CI 通过或 MR 已合并。
使用方式
用户通过 /glab-mr 调用。可选参数:/glab-mr assignee=<username> reviewer=<username> target=<branch>。参数覆盖推断值;目标分支没有硬编码默认值;省略 reviewer 不自动表示由 assignee 评审自己的工作。
适用场景
适用于在 GitLab 仓库中按用户指定范围准备、创建或更新合并请求,尤其是需要遵循仓库提交风格、MR 模板与描述规范,并避免提交无关改动或密钥的场合;也支持只输出草稿、不推送的用法。
限制
仅适用于 GitLab;GitHub 需使用对应工作流。该技能不授权合并。资料未提供安装方式、价格、收费或平台支持等更多信息。