diff --git a/shortcuts/branch/branch.go b/shortcuts/branch/branch.go index 5be0b0f..37684b6 100644 --- a/shortcuts/branch/branch.go +++ b/shortcuts/branch/branch.go @@ -110,7 +110,7 @@ func Shortcuts() []*common.Shortcut { return err } name, _ := ctx.RequireArg("name") - env, err := ctx.CallAPI("DELETE", fmt.Sprintf("%s/protected_branches/%s", ctx.RepoPath(), name), nil) + env, err := ctx.CallAPI("DELETE", fmt.Sprintf("%s/protected_branches/%s", ctx.RepoPath(), url.PathEscape(name)), nil) if err != nil { return err } diff --git a/skills/gitlink-branch/SKILL.md b/skills/gitlink-branch/SKILL.md index e962ce7..03e16f7 100644 --- a/skills/gitlink-branch/SKILL.md +++ b/skills/gitlink-branch/SKILL.md @@ -24,6 +24,7 @@ metadata: | `branch +create` | 创建新分支 | ⚠️ Write Operation | | `branch +delete` | 删除分支 | 🔴 Destructive Operation | | `branch +protect` | 设置分支保护规则 | ⚠️ Write Operation | +| `branch +unprotect` | 移除分支保护规则 | ⚠️ Write Operation | ## 参数参考 @@ -69,6 +70,16 @@ metadata: | `--format` | 否 | 输出格式:`json`/`table`/`yaml` | | `--debug` | 否 | 启用调试输出 | +### branch +unprotect + +| 参数 | 必填 | 说明 | +|------|------|------| +| `--name, -n` | 是 | 要移除保护的分支名称 | +| `--owner` | 是* | 仓库所有者(可从 git remote 自动推断) | +| `--repo` | 是* | 仓库名称(可从 git remote 自动推断) | +| `--format` | 否 | 输出格式:`json`/`table`/`yaml` | +| `--debug` | 否 | 启用调试输出 | + > *如果在 GitLink 仓库目录下执行,`--owner` 和 `--repo` 可自动推断。 ## 使用示例 @@ -103,6 +114,9 @@ gitlink-cli branch +protect --name main # 指定仓库保护分支 gitlink-cli branch +protect --name main --owner someone --repo myrepo + +# 移除分支保护(仅简单分支名,含 / 的路径需通过 Web 操作) +gitlink-cli branch +unprotect --name main ``` ## Workflow 注意事项 @@ -134,6 +148,17 @@ gitlink-cli branch +protect --name main --owner someone --repo myrepo 2. 执行 `branch +protect --name `。 3. 输出设置结果。 +### branch +unprotect(Write Operation) + +> [!CAUTION] +> This is a **Write Operation** — confirm user intent. + +1. 确认用户希望移除保护的分支名称。 +2. 执行 `branch +unprotect --name `。 +3. 输出结果。 + +> **注意:** 含 `/` 的分支名(如 `feature/my-branch`)可能无法通过 CLI 解除保护(受限于 Gitea API),需通过 Web 页面操作。 + ## References - [gitlink-shared](../gitlink-shared/SKILL.md) — 认证、全局参数、安全规则 diff --git a/skills/gitlink-branch/examples/branch-workflow.md b/skills/gitlink-branch/examples/branch-workflow.md index 4311151..3087762 100644 --- a/skills/gitlink-branch/examples/branch-workflow.md +++ b/skills/gitlink-branch/examples/branch-workflow.md @@ -65,4 +65,6 @@ gitlink-cli branch +delete --name feature/old-login - `branch +delete` 是 **Destructive Operation**,操作前请确认分支内容已合并或无保留价值 - `branch +protect` 会对分支施加保护规则,影响后续的推送和合并流程 +- `branch +unprotect` 仅支持简单分支名(如 `main`),含 `/` 的路径需通过 Web 页面操作 +- 建议使用 `branch +list` 先查看分支状态,再执行写入/删除操作 - 建议使用 `branch +list` 先查看分支状态,再执行写入/删除操作