From 8d9e625f83bf05086cfb72087548d203aff96db3 Mon Sep 17 00:00:00 2001 From: David Svantesson Date: Mon, 11 Nov 2019 08:37:28 +0100 Subject: [PATCH] Only view branch or tag if it match refType requested. (#8899) * only view branch or tag if it match refName. * remove pointer in method --- modules/context/repo.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/context/repo.go b/modules/context/repo.go index 8a9c9e4b8cf..66f662ea0bc 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -518,6 +518,22 @@ func RepoRef() macaron.Handler { return RepoRefByType(RepoRefBranch) } +// RefTypeIncludesBranches returns true if ref type can be a branch +func (rt RepoRefType) RefTypeIncludesBranches() bool { + if rt == RepoRefLegacy || rt == RepoRefAny || rt == RepoRefBranch { + return true + } + return false +} + +// RefTypeIncludesTags returns true if ref type can be a tag +func (rt RepoRefType) RefTypeIncludesTags() bool { + if rt == RepoRefLegacy || rt == RepoRefAny || rt == RepoRefTag { + return true + } + return false +} + func getRefNameFromPath(ctx *Context, path string, isExist func(string) bool) string { refName := "" parts := strings.Split(path, "/") @@ -623,7 +639,7 @@ func RepoRefByType(refType RepoRefType) macaron.Handler { } else { refName = getRefName(ctx, refType) ctx.Repo.BranchName = refName - if ctx.Repo.GitRepo.IsBranchExist(refName) { + if refType.RefTypeIncludesBranches() && ctx.Repo.GitRepo.IsBranchExist(refName) { ctx.Repo.IsViewBranch = true ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) @@ -633,7 +649,7 @@ func RepoRefByType(refType RepoRefType) macaron.Handler { } ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() - } else if ctx.Repo.GitRepo.IsTagExist(refName) { + } else if refType.RefTypeIncludesTags() && ctx.Repo.GitRepo.IsTagExist(refName) { ctx.Repo.IsViewTag = true ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName) if err != nil {