From 4890434b1e902a8409e69aceee4c747f5a6d423f Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 12 Jan 2025 23:00:40 -0800 Subject: [PATCH] some improvements --- modules/git/ref.go | 13 +++++++++++++ routers/web/repo/tree.go | 14 +++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/git/ref.go b/modules/git/ref.go index f20a175e42..7f3c2d4657 100644 --- a/modules/git/ref.go +++ b/modules/git/ref.go @@ -84,6 +84,19 @@ func RefNameFromCommit(shortName string) RefName { return RefName(shortName) } +func RefNameFromTypeAndShortName(tp RefType, shortName string) RefName { + switch tp { + case RefTypeBranch: + return RefNameFromBranch(shortName) + case RefTypeTag: + return RefNameFromTag(shortName) + case RefTypeCommit: + return RefNameFromCommit(shortName) + default: + return "" + } +} + func (ref RefName) String() string { return string(ref) } diff --git a/routers/web/repo/tree.go b/routers/web/repo/tree.go index 9d867aebd4..0a7767aacb 100644 --- a/routers/web/repo/tree.go +++ b/routers/web/repo/tree.go @@ -56,16 +56,12 @@ func isExcludedEntry(entry *git.TreeEntry) bool { func Tree(ctx *context.Context) { treePath := ctx.PathParam("*") - var refFullName git.RefName - switch ctx.FormTrim("ref_type") { - case "branch": - refFullName = git.RefNameFromBranch(ctx.FormTrim("ref_name")) - case "tag": - refFullName = git.RefNameFromTag(ctx.FormTrim("ref_name")) - default: - refFullName = git.RefName(ctx.FormTrim("ref_name")) - } recursive := ctx.FormBool("recursive") + refFullName := git.RefNameFromTypeAndShortName(git.RefType(ctx.FormTrim("ref_type")), ctx.FormTrim("ref_name")) + if refFullName == "" { + ctx.Error(http.StatusBadRequest, "RefNameFromTypeAndShortName", "ref_type or ref_name is invalid") + return + } var results []*files_service.TreeViewNode var err error