]> source.dussan.org Git - gitea.git/commitdiff
Only view branch or tag if it match refType requested. (#8899)
authorDavid Svantesson <davidsvantesson@gmail.com>
Mon, 11 Nov 2019 07:37:28 +0000 (08:37 +0100)
committerLunny Xiao <xiaolunwen@gmail.com>
Mon, 11 Nov 2019 07:37:28 +0000 (15:37 +0800)
* only view branch or tag if it match refName.

* remove pointer in method

modules/context/repo.go

index 8a9c9e4b8cf70370fd62317fffb6979bc1acac27..66f662ea0bc139be25433bec2740ad10c2b2305a 100644 (file)
@@ -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 {