diff options
Diffstat (limited to 'routers/repo/http.go')
-rw-r--r-- | routers/repo/http.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/routers/repo/http.go b/routers/repo/http.go index 9475c25893..2bc50efd83 100644 --- a/routers/repo/http.go +++ b/routers/repo/http.go @@ -89,9 +89,24 @@ func HTTP(ctx *context.Context) { reponame = reponame[:len(reponame)-5] } - repo, err := models.GetRepositoryByOwnerAndName(username, reponame) + owner, err := models.GetUserByName(username) if err != nil { - ctx.NotFoundOrServerError("GetRepositoryByOwnerAndName", models.IsErrRepoNotExist, err) + ctx.NotFoundOrServerError("GetUserByName", models.IsErrUserNotExist, err) + return + } + + repo, err := models.GetRepositoryByName(owner.ID, reponame) + if err != nil { + if models.IsErrRepoNotExist(err) { + redirectRepoID, err := models.LookupRepoRedirect(owner.ID, reponame) + if err == nil { + context.RedirectToRepo(ctx, redirectRepoID) + } else { + ctx.NotFoundOrServerError("GetRepositoryByName", models.IsErrRepoRedirectNotExist, err) + } + } else { + ctx.ServerError("GetRepositoryByName", err) + } return } |