mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Remove duplicated of code
This commit is contained in:
		@@ -3,7 +3,7 @@ Gogs - Go Git Service [
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### Current version: 0.8.60
 | 
					##### Current version: 0.8.61
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Web | UI  | Preview  |
 | 
					| Web | UI  | Preview  |
 | 
				
			||||||
|:-------------:|:-------:|:-------:|
 | 
					|:-------------:|:-------:|:-------:|
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							@@ -17,7 +17,7 @@ import (
 | 
				
			|||||||
	"github.com/gogits/gogs/modules/setting"
 | 
						"github.com/gogits/gogs/modules/setting"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const APP_VER = "0.8.60.0306"
 | 
					const APP_VER = "0.8.61.0306"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	runtime.GOMAXPROCS(runtime.NumCPU())
 | 
						runtime.GOMAXPROCS(runtime.NumCPU())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,8 @@
 | 
				
			|||||||
package repo
 | 
					package repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gogits/gogs/models"
 | 
						"github.com/gogits/gogs/models"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/auth"
 | 
						"github.com/gogits/gogs/modules/auth"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/base"
 | 
						"github.com/gogits/gogs/modules/base"
 | 
				
			||||||
@@ -18,6 +20,29 @@ const (
 | 
				
			|||||||
	RELEASE_NEW base.TplName = "repo/release/new"
 | 
						RELEASE_NEW base.TplName = "repo/release/new"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// calReleaseNumCommitsBehind calculates given release has how many commits behind default branch.
 | 
				
			||||||
 | 
					func calReleaseNumCommitsBehind(repoCtx *middleware.RepoContext, release *models.Release, countCache map[string]int64) error {
 | 
				
			||||||
 | 
						// Fast return if release target is same as default branch.
 | 
				
			||||||
 | 
						if repoCtx.BranchName == release.Target {
 | 
				
			||||||
 | 
							release.NumCommitsBehind = repoCtx.CommitsCount - release.NumCommits
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Get count if not exists
 | 
				
			||||||
 | 
						if _, ok := countCache[release.Target]; !ok {
 | 
				
			||||||
 | 
							commit, err := repoCtx.GitRepo.GetBranchCommit(repoCtx.BranchName)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return fmt.Errorf("GetBranchCommit: %v", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							countCache[repoCtx.BranchName], err = commit.CommitsCount()
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return fmt.Errorf("CommitsCount: %v", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						release.NumCommitsBehind = countCache[repoCtx.BranchName] - release.NumCommits
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Releases(ctx *middleware.Context) {
 | 
					func Releases(ctx *middleware.Context) {
 | 
				
			||||||
	ctx.Data["Title"] = ctx.Tr("repo.release.releases")
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.releases")
 | 
				
			||||||
	ctx.Data["PageIsReleaseList"] = true
 | 
						ctx.Data["PageIsReleaseList"] = true
 | 
				
			||||||
@@ -28,7 +53,7 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rels, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID)
 | 
						releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.Handle(500, "GetReleasesByRepoID", err)
 | 
							ctx.Handle(500, "GetReleasesByRepoID", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -39,44 +64,29 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	tags := make([]*models.Release, len(rawTags))
 | 
						tags := make([]*models.Release, len(rawTags))
 | 
				
			||||||
	for i, rawTag := range rawTags {
 | 
						for i, rawTag := range rawTags {
 | 
				
			||||||
		for j, rel := range rels {
 | 
							for j, r := range releases {
 | 
				
			||||||
			if rel == nil || (rel.IsDraft && !ctx.Repo.IsOwner()) {
 | 
								if r == nil || (r.IsDraft && !ctx.Repo.IsOwner()) {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if rel.TagName == rawTag {
 | 
								if r.TagName == rawTag {
 | 
				
			||||||
				rel.Publisher, err = models.GetUserByID(rel.PublisherID)
 | 
									r.Publisher, err = models.GetUserByID(r.PublisherID)
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					if models.IsErrUserNotExist(err) {
 | 
										if models.IsErrUserNotExist(err) {
 | 
				
			||||||
						rel.Publisher = models.NewFakeUser()
 | 
											r.Publisher = models.NewFakeUser()
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
						ctx.Handle(500, "GetUserByID", err)
 | 
											ctx.Handle(500, "GetUserByID", err)
 | 
				
			||||||
						return
 | 
											return
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				// FIXME: duplicated code.
 | 
					
 | 
				
			||||||
				// Get corresponding target if it's not the current branch.
 | 
									if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {
 | 
				
			||||||
				if ctx.Repo.BranchName != rel.Target {
 | 
										ctx.Handle(500, "calReleaseNumCommitsBehind", err)
 | 
				
			||||||
					// Get count if not exists.
 | 
					 | 
				
			||||||
					if _, ok := countCache[rel.Target]; !ok {
 | 
					 | 
				
			||||||
						commit, err := ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.BranchName)
 | 
					 | 
				
			||||||
						if err != nil {
 | 
					 | 
				
			||||||
							ctx.Handle(500, "GetBranchCommit", err)
 | 
					 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
						countCache[ctx.Repo.BranchName], err = commit.CommitsCount()
 | 
					 | 
				
			||||||
						if err != nil {
 | 
					 | 
				
			||||||
							ctx.Handle(500, "CommitsCount", err)
 | 
					 | 
				
			||||||
							return
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					rel.NumCommitsBehind = ctx.Repo.CommitsCount - rel.NumCommits
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				rel.Note = markdown.RenderString(rel.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())
 | 
									r.Note = markdown.RenderString(r.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())
 | 
				
			||||||
				tags[i] = rel
 | 
									tags[i] = r
 | 
				
			||||||
				rels[j] = nil // Mark as used.
 | 
									releases[j] = nil // Mark as used.
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -103,43 +113,28 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, rel := range rels {
 | 
						for _, r := range releases {
 | 
				
			||||||
		if rel == nil {
 | 
							if r == nil {
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		rel.Publisher, err = models.GetUserByID(rel.PublisherID)
 | 
							r.Publisher, err = models.GetUserByID(r.PublisherID)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			if models.IsErrUserNotExist(err) {
 | 
								if models.IsErrUserNotExist(err) {
 | 
				
			||||||
				rel.Publisher = models.NewFakeUser()
 | 
									r.Publisher = models.NewFakeUser()
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				ctx.Handle(500, "GetUserByID", err)
 | 
									ctx.Handle(500, "GetUserByID", err)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// FIXME: duplicated code.
 | 
					
 | 
				
			||||||
		// Get corresponding target if it's not the current branch.
 | 
							if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {
 | 
				
			||||||
		if ctx.Repo.BranchName != rel.Target {
 | 
								ctx.Handle(500, "calReleaseNumCommitsBehind", err)
 | 
				
			||||||
			// Get count if not exists.
 | 
					 | 
				
			||||||
			if _, ok := countCache[rel.Target]; !ok {
 | 
					 | 
				
			||||||
				commit, err := ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.BranchName)
 | 
					 | 
				
			||||||
				if err != nil {
 | 
					 | 
				
			||||||
					ctx.Handle(500, "GetBranchCommit", err)
 | 
					 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
				countCache[ctx.Repo.BranchName], err = commit.CommitsCount()
 | 
					 | 
				
			||||||
				if err != nil {
 | 
					 | 
				
			||||||
					ctx.Handle(500, "CommitsCount", err)
 | 
					 | 
				
			||||||
					return
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			rel.NumCommitsBehind = ctx.Repo.CommitsCount - rel.NumCommits
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		rel.Note = markdown.RenderString(rel.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())
 | 
							r.Note = markdown.RenderString(r.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())
 | 
				
			||||||
		tags = append(tags, rel)
 | 
							tags = append(tags, r)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	models.SortReleases(tags)
 | 
						models.SortReleases(tags)
 | 
				
			||||||
	ctx.Data["Releases"] = tags
 | 
						ctx.Data["Releases"] = tags
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
0.8.60.0306
 | 
					0.8.61.0306
 | 
				
			||||||
		Reference in New Issue
	
	Block a user