Skip to main content
Glama
branch-tools.md13.8 kB
# Branch 分支管理工具 ## 概述 Branch 工具模块提供完整的 Gitea 分支管理功能,支持分支的创建、查询、更新、删除,以及分支保护规则的全面管理。 **新增工具数量**: 10 个 **总工具数量**: 95 → **105** 个 **基于**: Gitea API v1.25+ (最新版本) --- ## 功能列表 ### 分支操作 (5 个工具) 1. **gitea_branch_list** - 列出仓库分支 2. **gitea_branch_create** - 创建新分支 3. **gitea_branch_get** - 获取分支详情 4. **gitea_branch_delete** - 删除分支 5. **gitea_branch_rename** - 重命名分支 ### 分支保护 (5 个工具) 6. **gitea_branch_protection_list** - 列出分支保护规则 7. **gitea_branch_protection_create** - 创建分支保护规则 8. **gitea_branch_protection_get** - 获取分支保护详情 9. **gitea_branch_protection_update** - 更新分支保护规则 10. **gitea_branch_protection_delete** - 删除分支保护规则 --- ## 工具详解 ### 1. gitea_branch_list 列出仓库的所有分支。 **参数**: - `owner` (可选): 仓库所有者,使用上下文默认值 - `repo` (可选): 仓库名称,使用上下文默认值 - `page` (可选): 页码,默认 1 - `limit` (可选): 每页数量,默认 30,最大 100 **返回信息**: - 分支列表 - 每个分支的提交信息 - 分支保护状态 **示例**: ```json { "page": 1, "limit": 10 } ``` --- ### 2. gitea_branch_create 从现有分支或提交创建新分支。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `new_branch_name` (必需): 新分支名称 - `old_branch_name` (可选): 源分支名称(与 old_ref_name 二选一) - `old_ref_name` (可选): 源引用名称(分支/标签/提交 SHA) **使用场景**: - 创建功能分支进行开发 - 从特定提交创建修复分支 - 基于 tag 创建发布分支 **示例**: ```json { "new_branch_name": "feature/new-api", "old_branch_name": "develop" } ``` --- ### 3. gitea_branch_get 获取特定分支的详细信息,包括其有效的分支保护规则。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `branch` (必需): 分支名称 **返回信息**: - 分支详情 - 最新提交信息 - 有效的分支保护规则 --- ### 4. gitea_branch_delete 删除指定的分支。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `branch` (必需): 要删除的分支名称 **注意事项**: - 不能删除默认分支 - 如果分支有保护规则,可能无法删除 - 删除操作不可逆 --- ### 5. gitea_branch_rename 重命名仓库中的分支。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `branch` (必需): 当前分支名称 - `new_name` (必需): 新分支名称 **使用场景**: - 修正拼写错误 - 更新分支命名规范 - 重构分支结构 --- ### 6. gitea_branch_protection_list 列出仓库的所有分支保护规则。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 **返回信息**: - 所有分支保护规则列表 - 每个规则的详细配置 - 规则优先级 --- ### 7. gitea_branch_protection_create 为仓库创建分支保护规则。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `rule_name` (可选): 规则名称(支持模式匹配) - `enable_push` (可选): 启用推送限制 - `enable_push_whitelist` (可选): 启用推送白名单 - `push_whitelist_usernames` (可选): 允许推送的用户名列表 - `push_whitelist_teams` (可选): 允许推送的团队列表 - `push_whitelist_deploy_keys` (可选): 允许部署密钥推送 - `enable_merge_whitelist` (可选): 启用合并白名单 - `merge_whitelist_usernames` (可选): 允许合并的用户名列表 - `merge_whitelist_teams` (可选): 允许合并的团队列表 - `enable_status_check` (可选): 启用状态检查 - `status_check_contexts` (可选): 必需的状态检查上下文列表 - `required_approvals` (可选): 必需的批准数量 - `enable_approvals_whitelist` (可选): 启用批准白名单 - `approvals_whitelist_usernames` (可选): 批准白名单用户 - `approvals_whitelist_teams` (可选): 批准白名单团队 - `block_on_rejected_reviews` (可选): 拒绝审查时阻止合并 - `block_on_outdated_branch` (可选): 分支过时时阻止合并 - `dismiss_stale_approvals` (可选): 推送时撤销过时批准 - `require_signed_commits` (可选): 要求签名提交 - `protected_file_patterns` (可选): 受保护的文件模式 - `unprotected_file_patterns` (可选): 不受保护的文件模式 **使用场景**: - 保护主分支防止直接推送 - 要求 PR 审查才能合并 - 设置 CI/CD 状态检查 - 实施代码审查流程 **示例 - 保护 main 分支**: ```json { "rule_name": "main", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_usernames": ["admin"], "required_approvals": 2, "enable_status_check": true, "status_check_contexts": ["ci/build", "ci/test"], "block_on_outdated_branch": true, "require_signed_commits": true } ``` **示例 - 保护所有 release 分支**: ```json { "rule_name": "release/*", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_teams": ["release-team"], "required_approvals": 1, "block_on_rejected_reviews": true } ``` --- ### 8. gitea_branch_protection_get 获取特定分支保护规则的详细信息。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `name` (必需): 分支保护规则名称 --- ### 9. gitea_branch_protection_update 更新现有的分支保护规则。只有提供的字段会被更新。 **参数**: 与 `gitea_branch_protection_create` 相同,但添加了: - `name` (必需): 要更新的规则名称 **使用场景**: - 调整审查要求 - 修改白名单 - 更新状态检查配置 --- ### 10. gitea_branch_protection_delete 删除特定的分支保护规则。 **参数**: - `owner` (可选): 仓库所有者 - `repo` (可选): 仓库名称 - `name` (必需): 要删除的规则名称 --- ## 实际使用场景 ### 场景 1: Git Flow 工作流 ```bash # 1. 创建 develop 分支 gitea_branch_create { new_branch_name: "develop", old_branch_name: "main" } # 2. 保护 main 分支 gitea_branch_protection_create { rule_name: "main", enable_push: true, enable_push_whitelist: true, push_whitelist_usernames: ["maintainer"], required_approvals: 2 } # 3. 创建功能分支 gitea_branch_create { new_branch_name: "feature/user-auth", old_branch_name: "develop" } # 4. 完成后删除功能分支 gitea_branch_delete { branch: "feature/user-auth" } ``` ### 场景 2: Release 分支管理 ```bash # 1. 列出所有分支 gitea_branch_list # 2. 从 main 创建 release 分支 gitea_branch_create { new_branch_name: "release/v1.0", old_branch_name: "main" } # 3. 保护 release 分支 gitea_branch_protection_create { rule_name: "release/*", enable_push: true, enable_push_whitelist: true, push_whitelist_teams: ["release-managers"], required_approvals: 1, block_on_rejected_reviews: true } ``` ### 场景 3: 热修复流程 ```bash # 1. 从 tag 创建热修复分支 gitea_branch_create { new_branch_name: "hotfix/security-patch", old_ref_name: "v1.0.0" # 从 tag 创建 } # 2. 获取分支详情确认 gitea_branch_get { branch: "hotfix/security-patch" } # 3. 修复完成后删除 gitea_branch_delete { branch: "hotfix/security-patch" } ``` ### 场景 4: 团队协作权限管理 ```bash # 1. 列出所有保护规则 gitea_branch_protection_list # 2. 为 develop 分支设置团队权限 gitea_branch_protection_create { rule_name: "develop", enable_push: true, enable_push_whitelist: true, push_whitelist_teams: ["developers"], enable_merge_whitelist: true, merge_whitelist_teams: ["senior-developers"], required_approvals: 1, enable_status_check: true, status_check_contexts: ["ci/test"] } # 3. 更新规则(增加必需批准数) gitea_branch_protection_update { name: "develop", required_approvals: 2 } ``` ### 场景 5: CI/CD 集成 ```bash # 1. 设置要求 CI 通过才能合并 gitea_branch_protection_create { rule_name: "main", enable_status_check: true, status_check_contexts: [ "ci/build", "ci/test", "ci/lint", "security/scan" ], required_approvals: 1, block_on_outdated_branch: true } # 2. 获取保护规则详情 gitea_branch_protection_get { name: "main" } ``` --- ## 分支保护最佳实践 ### 1. 主分支保护 **推荐配置**: ```json { "rule_name": "main", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_usernames": ["bot"], "required_approvals": 2, "enable_status_check": true, "status_check_contexts": ["ci/build", "ci/test"], "block_on_rejected_reviews": true, "block_on_outdated_branch": true, "dismiss_stale_approvals": true, "require_signed_commits": true } ``` **特点**: - 禁止直接推送(除了 CI bot) - 要求 2 个批准 - 必须通过 CI 检查 - 拒绝审查时阻止合并 - 分支过时时阻止合并 - 推送时撤销旧批准 - 要求签名提交 ### 2. 开发分支保护 **推荐配置**: ```json { "rule_name": "develop", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_teams": ["developers"], "required_approvals": 1, "enable_status_check": true, "status_check_contexts": ["ci/test"], "block_on_rejected_reviews": false, "block_on_outdated_branch": false } ``` **特点**: - 开发团队可以推送 - 至少 1 个批准 - 必须通过测试 - 较宽松的合并规则 ### 3. Release 分支保护 **推荐配置**: ```json { "rule_name": "release/*", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_teams": ["release-managers"], "required_approvals": 2, "enable_status_check": true, "status_check_contexts": ["ci/build", "ci/test", "security/scan"], "block_on_rejected_reviews": true, "require_signed_commits": true } ``` **特点**: - 仅发布经理可推送 - 要求 2 个批准 - 严格的 CI 检查 - 必须签名提交 ### 4. 模式匹配 分支保护支持模式匹配: - `main` - 精确匹配 - `release/*` - 匹配所有 release 分支 - `feature/*` - 匹配所有 feature 分支 - `hotfix/*` - 匹配所有 hotfix 分支 --- ## 与其他工具的集成 ### 与 Issue/PR 工具配合 ```bash # 1. 创建功能分支 gitea_branch_create { new_branch_name: "feature/issue-123", old_branch_name: "develop" } # 2. 创建 Issue gitea_issue_create { title: "Implement feature X", body: "Working on feature branch: feature/issue-123" } # 3. 创建 PR gitea_pr_create { head: "feature/issue-123", base: "develop", title: "Fix #123: Implement feature X" } ``` ### 与 Release 工具配合 ```bash # 1. 创建 release 分支 gitea_branch_create { new_branch_name: "release/v1.0", old_branch_name: "develop" } # 2. 创建 Release gitea_release_create { tag_name: "v1.0.0", target_commitish: "release/v1.0", name: "Version 1.0.0" } # 3. 合并回 main 后删除 release 分支 gitea_branch_delete { branch: "release/v1.0" } ``` --- ## API 参考 基于 Gitea API 官方文档实现(v1.25+): ### 分支操作 - 列出分支: `GET /repos/:owner/:repo/branches` - 创建分支: `POST /repos/:owner/:repo/branches` - 获取分支: `GET /repos/:owner/:repo/branches/:branch` - 删除分支: `DELETE /repos/:owner/:repo/branches/:branch` - 重命名分支: `PATCH /repos/:owner/:repo/branches/:branch` ### 分支保护 - 列出保护规则: `GET /repos/:owner/:repo/branch_protections` - 创建保护规则: `POST /repos/:owner/:repo/branch_protections` - 获取保护规则: `GET /repos/:owner/:repo/branch_protections/:name` - 更新保护规则: `PATCH /repos/:owner/:repo/branch_protections/:name` - 删除保护规则: `DELETE /repos/:owner/:repo/branch_protections/:name` --- ## 常见问题 ### Q: 如何防止直接推送到主分支? A: 创建分支保护规则,启用推送限制: ```json { "rule_name": "main", "enable_push": true, "enable_push_whitelist": true, "push_whitelist_usernames": [] // 空白名单 = 无人可推送 } ``` ### Q: 如何设置 CI 通过才能合并? A: 启用状态检查: ```json { "rule_name": "main", "enable_status_check": true, "status_check_contexts": ["ci/build", "ci/test"] } ``` ### Q: 可以删除有保护规则的分支吗? A: 如果分支被保护规则匹配,可能无法删除。需要先删除或修改保护规则。 ### Q: 分支重命名会影响 PR 吗? A: 是的,重命名分支可能会影响相关的 PR。建议在重命名前确保没有未合并的 PR。 ### Q: 模式匹配规则的优先级如何? A: Gitea 按照创建顺序应用规则。如果多个规则匹配同一分支,通常使用最严格的设置。 --- ## 总结 Branch 工具模块为 Gitea MCP Service 添加了完整的分支管理和保护能力: ✅ **10 个新工具**: 覆盖分支的完整生命周期和保护规则管理 ✅ **Git Flow 支持**: 完整支持 Git Flow 和其他分支策略 ✅ **细粒度权限**: 支持用户、团队级别的权限控制 ✅ **CI/CD 集成**: 状态检查和审查流程集成 ✅ **上下文感知**: 自动使用项目上下文,简化操作 现在总工具数量达到 **105 个**,覆盖度提升到 **65%**! --- ## 参考资源 ### Sources: - [Gitea API Documentation](https://docs.gitea.com/api/) - [Gitea Demo Swagger UI](https://demo.gitea.com/api/swagger) - [Git Flow Workflow](https://nvie.com/posts/a-successful-git-branching-model/) - [Branch Protection Best Practices](https://docs.gitea.com/enterprise/features/branch-protection)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SupenBysz/gitea-mcp-tool'

If you have feedback or need assistance with the MCP directory API, please join our Discord server