diff options
author | Unknown <joe2010xtmf@163.com> | 2014-04-03 15:50:55 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-04-03 15:50:55 -0400 |
commit | 79a610592ea7c2e93ab2f91190af1782c4aa8f8d (patch) | |
tree | 94515ccd8e27fc7f01c08daea725bdd2f3dbee6a /routers/repo/repo.go | |
parent | bbadbbdf685a7f6cb1924442a115aa88bb520e07 (diff) | |
download | gitea-79a610592ea7c2e93ab2f91190af1782c4aa8f8d.tar.gz gitea-79a610592ea7c2e93ab2f91190af1782c4aa8f8d.zip |
Add: rename repository
Diffstat (limited to 'routers/repo/repo.go')
-rw-r--r-- | routers/repo/repo.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 1cd3dd86ba..a55647a314 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -5,6 +5,7 @@ package repo import ( + "fmt" "path" "path/filepath" "strings" @@ -278,19 +279,44 @@ func SettingPost(ctx *middleware.Context) { switch ctx.Query("action") { case "update": + isNameChanged := false + newRepoName := ctx.Query("name") + // Check if repository name has been changed. + if ctx.Repo.Repository.Name != newRepoName { + isExist, err := models.IsRepositoryExist(ctx.Repo.Owner, newRepoName) + if err != nil { + ctx.Handle(404, "repo.SettingPost(update: check existence)", err) + return + } else if isExist { + ctx.RenderWithErr("Repository name has been taken in your repositories.", "repo/setting", nil) + return + } else if err = models.ChangeRepositoryName(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name, newRepoName); err != nil { + ctx.Handle(404, "repo.SettingPost(update)", err) + return + } + log.Trace("%s Repository name changed: %s/%s -> %s", ctx.Req.RequestURI, ctx.User.Name, ctx.Repo.Repository.Name, newRepoName) + + isNameChanged = true + ctx.Repo.Repository.Name = newRepoName + } + ctx.Repo.Repository.Description = ctx.Query("desc") ctx.Repo.Repository.Website = ctx.Query("site") if err := models.UpdateRepository(ctx.Repo.Repository); err != nil { ctx.Handle(404, "repo.SettingPost(update)", err) return } + ctx.Data["IsSuccess"] = true - ctx.HTML(200, "repo/setting") - log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.LowerName) + if isNameChanged { + ctx.Redirect(fmt.Sprintf("/%s/%s/settings", ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)) + } else { + ctx.HTML(200, "repo/setting") + } + log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) case "delete": if len(ctx.Repo.Repository.Name) == 0 || ctx.Repo.Repository.Name != ctx.Query("repository") { - ctx.Data["ErrorMsg"] = "Please make sure you entered repository name is correct." - ctx.HTML(200, "repo/setting") + ctx.RenderWithErr("Please make sure you entered repository name is correct.", "repo/setting", nil) return } |