diff --git a/models/repo.go b/models/repo.go index 0e10e171d..174fbd9d5 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1865,9 +1865,6 @@ func ForkRepository(u *User, oldRepo *Repository, name, desc string) (_ *Reposit } func (repo *Repository) GetForks() ([]*Repository, error) { - forks := make([]*Repository, 0, 10) - - err := x.Find(&forks, &Repository{ForkID: repo.ID}) - - return forks, err + forks := make([]*Repository, 0, repo.NumForks) + return forks, x.Find(&forks, &Repository{ForkID: repo.ID}) } diff --git a/routers/repo/forks.go b/routers/repo/forks.go deleted file mode 100644 index 099f0cc4f..000000000 --- a/routers/repo/forks.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package repo - -import ( - "fmt" - "github.com/gogits/gogs/modules/base" - "github.com/gogits/gogs/modules/middleware" -) - -const ( - FORKS base.TplName = "repo/forks" -) - -func Forks(ctx *middleware.Context) { - ctx.Data["Title"] = ctx.Tr("repos.forks") - - forks, err := ctx.Repo.Repository.GetForks() - - if err != nil { - ctx.Handle(500, "GetForks", err) - return - } - - for _, fork := range forks { - if err = fork.GetOwner(); err != nil { - ctx.Handle(500, "GetOwner", fmt.Errorf("%d: %v", fork.ID, err)) - return - } - } - - ctx.Data["Forks"] = forks - - ctx.HTML(200, FORKS) -} diff --git a/routers/repo/view.go b/routers/repo/view.go index 8c62b7e4a..eeb5d5c05 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -24,6 +24,7 @@ import ( const ( HOME base.TplName = "repo/home" WATCHERS base.TplName = "repo/watchers" + FORKS base.TplName = "repo/forks" ) func Home(ctx *middleware.Context) { @@ -278,3 +279,23 @@ func Stars(ctx *middleware.Context) { ctx.Data["PageIsStargazers"] = true renderItems(ctx, ctx.Repo.Repository.NumStars, ctx.Repo.Repository.GetStargazers) } + +func Forks(ctx *middleware.Context) { + ctx.Data["Title"] = ctx.Tr("repos.forks") + + forks, err := ctx.Repo.Repository.GetForks() + if err != nil { + ctx.Handle(500, "GetForks", err) + return + } + + for _, fork := range forks { + if err = fork.GetOwner(); err != nil { + ctx.Handle(500, "GetOwner", err) + return + } + } + ctx.Data["Forks"] = forks + + ctx.HTML(200, FORKS) +}