From b60ee86a2406c03f94993f3899e8508f93a59ccb Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 16 Dec 2024 09:36:07 -0800 Subject: [PATCH] Add tree --- routers/web/repo/{treelist.go => tree.go} | 26 +++++++++++++++++++++++ routers/web/repo/tree_test.go | 10 +++++++++ routers/web/web.go | 8 +++---- 3 files changed, 40 insertions(+), 4 deletions(-) rename routers/web/repo/{treelist.go => tree.go} (63%) create mode 100644 routers/web/repo/tree_test.go diff --git a/routers/web/repo/treelist.go b/routers/web/repo/tree.go similarity index 63% rename from routers/web/repo/treelist.go rename to routers/web/repo/tree.go index d11af4669f..13e6cea53f 100644 --- a/routers/web/repo/treelist.go +++ b/routers/web/repo/tree.go @@ -5,6 +5,8 @@ package repo import ( "net/http" + "path" + "strings" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" @@ -52,3 +54,27 @@ func isExcludedEntry(entry *git.TreeEntry) bool { return false } + +func getPossibleBranches(dir string) []string { + cnt := strings.Count(dir, "/") + branches := make([]string, cnt, cnt) + for i := 0; i < cnt; i++ { + branches[i] = dir + dir = path.Dir(dir) + } + return branches +} + +func guessRefInfoAndDir(ctx *context.Context, dir string) (git.RefName, string, error) { + branches := getPossibleBranches(dir) +} + +func Tree(ctx *context.Context) { + pathParam := ctx.PathParam("*") + dir := path.Dir(pathParam) + refName, realDir, err := guessRefInfoAndDir(ctx, dir) + if err != nil { + ctx.ServerError("guessRefInfoAndDir", err) + return + } +} diff --git a/routers/web/repo/tree_test.go b/routers/web/repo/tree_test.go new file mode 100644 index 0000000000..96663170f3 --- /dev/null +++ b/routers/web/repo/tree_test.go @@ -0,0 +1,10 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package repo + +import "testing" + +func Test_getPossibleBranches(t *testing.T) { + getPossibleBranches("") +} diff --git a/routers/web/web.go b/routers/web/web.go index bf8c4306bf..341c87e4da 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1157,14 +1157,14 @@ func registerRoutes(m *web.Router) { m.Group("/{username}/{reponame}", func() { m.Get("/find/*", repo.FindFiles) - m.Group("/tree-list", func() { + m.Group("/tree-list", func() { // for find files m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.TreeList) m.Get("/tag/*", context.RepoRefByType(context.RepoRefTag), repo.TreeList) m.Get("/commit/*", context.RepoRefByType(context.RepoRefCommit), repo.TreeList) }) - m.Group("/contents", func() { - m.Get("", repo.GetContentsList) - m.Get("/*", repo.GetContents) + m.Group("/tree", func() { + m.Get("", repo.Tree) + m.Get("/*", repo.Tree) }) m.Get("/compare", repo.MustBeNotEmpty, repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.CompareDiff) m.Combo("/compare/*", repo.MustBeNotEmpty, repo.SetEditorconfigIfExists).