aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/pull.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/pull.go')
-rw-r--r--routers/repo/pull.go52
1 files changed, 23 insertions, 29 deletions
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 54a59acd..aa9a6bcb 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -38,31 +38,27 @@ var (
}
)
-func getForkRepository(ctx *context.Context) *models.Repository {
- forkRepo, err := models.GetRepositoryByID(ctx.ParamsInt64(":repoid"))
+func parseBaseRepository(ctx *context.Context) *models.Repository {
+ baseRepo, err := models.GetRepositoryByID(ctx.ParamsInt64(":repoid"))
if err != nil {
- if models.IsErrRepoNotExist(err) {
- ctx.Handle(404, "GetRepositoryByID", nil)
- } else {
- ctx.Handle(500, "GetRepositoryByID", err)
- }
+ ctx.NotFoundOrServerError("GetRepositoryByID", models.IsErrRepoNotExist, err)
return nil
}
- if !forkRepo.CanBeForked() || !forkRepo.HasAccess(ctx.User.ID) {
- ctx.Handle(404, "getForkRepository", nil)
+ if !baseRepo.CanBeForked() || !baseRepo.HasAccess(ctx.User.ID) {
+ ctx.NotFound()
return nil
}
- ctx.Data["repo_name"] = forkRepo.Name
- ctx.Data["description"] = forkRepo.Description
- ctx.Data["IsPrivate"] = forkRepo.IsPrivate
+ ctx.Data["repo_name"] = baseRepo.Name
+ ctx.Data["description"] = baseRepo.Description
+ ctx.Data["IsPrivate"] = baseRepo.IsPrivate
- if err = forkRepo.GetOwner(); err != nil {
+ if err = baseRepo.GetOwner(); err != nil {
ctx.Handle(500, "GetOwner", err)
return nil
}
- ctx.Data["ForkFrom"] = forkRepo.Owner.Name + "/" + forkRepo.Name
+ ctx.Data["ForkFrom"] = baseRepo.Owner.Name + "/" + baseRepo.Name
if err := ctx.User.GetOrganizations(true); err != nil {
ctx.Handle(500, "GetOrganizations", err)
@@ -70,13 +66,13 @@ func getForkRepository(ctx *context.Context) *models.Repository {
}
ctx.Data["Orgs"] = ctx.User.Orgs
- return forkRepo
+ return baseRepo
}
func Fork(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("new_fork")
- getForkRepository(ctx)
+ parseBaseRepository(ctx)
if ctx.Written() {
return
}
@@ -88,12 +84,12 @@ func Fork(ctx *context.Context) {
func ForkPost(ctx *context.Context, f form.CreateRepo) {
ctx.Data["Title"] = ctx.Tr("new_fork")
- forkRepo := getForkRepository(ctx)
+ baseRepo := parseBaseRepository(ctx)
if ctx.Written() {
return
}
- ctxUser := checkContextUser(ctx, f.Uid)
+ ctxUser := checkContextUser(ctx, f.UserID)
if ctx.Written() {
return
}
@@ -104,27 +100,25 @@ func ForkPost(ctx *context.Context, f form.CreateRepo) {
return
}
- repo, has := models.HasForkedRepo(ctxUser.ID, forkRepo.ID)
+ repo, has := models.HasForkedRepo(ctxUser.ID, baseRepo.ID)
if has {
- ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
+ ctx.Redirect(repo.Link())
return
}
// Check ownership of organization.
- if ctxUser.IsOrganization() {
- if !ctxUser.IsOwnedBy(ctx.User.ID) {
- ctx.Error(403)
- return
- }
+ if ctxUser.IsOrganization() && !ctxUser.IsOwnedBy(ctx.User.ID) {
+ ctx.Error(403)
+ return
}
// Cannot fork to same owner
- if ctxUser.ID == forkRepo.OwnerID {
+ if ctxUser.ID == baseRepo.OwnerID {
ctx.RenderWithErr(ctx.Tr("repo.settings.cannot_fork_to_same_owner"), FORK, &f)
return
}
- repo, err := models.ForkRepository(ctx.User, ctxUser, forkRepo, f.RepoName, f.Description)
+ repo, err := models.ForkRepository(ctx.User, ctxUser, baseRepo, f.RepoName, f.Description)
if err != nil {
ctx.Data["Err_RepoName"] = true
switch {
@@ -140,8 +134,8 @@ func ForkPost(ctx *context.Context, f form.CreateRepo) {
return
}
- log.Trace("Repository forked[%d]: %s/%s", forkRepo.ID, ctxUser.Name, repo.Name)
- ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name)
+ log.Trace("Repository forked from '%s' -> '%s'", baseRepo.FullName(), repo.FullName())
+ ctx.Redirect(repo.Link())
}
func checkPullInfo(ctx *context.Context) *models.Issue {