aboutsummaryrefslogtreecommitdiffstats
path: root/routers/repo/http.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/http.go')
-rw-r--r--routers/repo/http.go19
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
}