fix(repo): +tree respects repository default branch when --ref omitted

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
farmyobutu5233 2026-07-05 12:27:01 +00:00
parent 9749a4c832
commit fcde26823b
3 changed files with 26 additions and 8 deletions

View File

@ -0,0 +1,18 @@
# repo +tree 遵循仓库默认分支
## 背景
`repo +tree` 未指定 `--ref` 时把 ref 硬编码为 `master`,对默认分支是
`main`(或其他名称)的仓库直接返回 `[-2] 你访问的文件不存在`
(生产实测 `datawhalechina/paper-chart-tutorial`,默认分支 `main`)。
平台 `sub_entries` API 在不带 `ref` 参数时会自动使用仓库默认分支。
## 变更
- `--ref` 未指定时不再发送 `ref` 参数交由平台落到默认分支flag 也不再
声明 `master` 默认值。
## 验证
- `go test ./shortcuts/repo/`(默认 ref 断言改为「不携带 ref 参数」)
- 生产 gitlink.org.cn 实测:默认分支为 `main``master` 的仓库均正常列出根目录。

View File

@ -86,21 +86,19 @@ func Shortcuts(translators ...*i18n.Translator) []*common.Shortcut {
Description: tr.T("cmd.repo.tree.short"),
Flags: []common.Flag{
{Name: "path", Short: "p", Usage: tr.T("flag.repo.tree.path")},
{Name: "ref", Short: "r", Usage: tr.T("flag.repo.tree.ref"), Default: "master"},
{Name: "ref", Short: "r", Usage: tr.T("flag.repo.tree.ref")},
},
Run: func(ctx *common.RuntimeContext) error {
if err := ctx.ResolveOwnerRepo(); err != nil {
return err
}
q := url.Values{}
ref := ctx.Arg("ref")
if ref == "" {
ref = "master"
}
if path := ctx.Arg("path"); path != "" {
q.Set("filepath", path)
}
q.Set("ref", ref)
if ref := ctx.Arg("ref"); ref != "" {
q.Set("ref", ref)
}
env, err := ctx.CallAPIWithQuery("GET", ctx.RepoPath()+"/sub_entries", q)
if err != nil {
return err

View File

@ -158,7 +158,9 @@ func TestRepoTreeListsRootOnDefaultRef(t *testing.T) {
if _, ok := r.URL.Query()["filepath"]; ok {
t.Fatalf("did not expect filepath query for repository root, got %q", r.URL.Query().Get("filepath"))
}
assertEqual(t, r.URL.Query().Get("ref"), "master")
if _, ok := r.URL.Query()["ref"]; ok {
t.Fatalf("did not expect ref query for default ref, got %q", r.URL.Query().Get("ref"))
}
writeJSON(t, w, map[string]interface{}{
"entries": []map[string]interface{}{
{"name": "README.md", "type": "file"},
@ -213,7 +215,7 @@ func TestRepoTreeShortcutRegistersHelpFlags(t *testing.T) {
if !ok {
t.Fatal("tree shortcut missing ref flag")
}
if refFlag.Short != "r" || refFlag.Default != "master" || refFlag.Usage == "" {
if refFlag.Short != "r" || refFlag.Default != "" || refFlag.Usage == "" {
t.Fatalf("unexpected ref flag: %+v", refFlag)
}
}