When transferring ownership of a repo to a different user/org, create a repo redirect that points to the new location in the same way that is done when a repo is renamed. Signed-off-by: James E. Blair <jeblair@redhat.com>
This commit is contained in:
parent
525f03306f
commit
48c101affe
2 changed files with 9 additions and 1 deletions
|
@ -204,7 +204,7 @@ func RedirectToRepo(ctx *Context, redirectRepoID int64) {
|
||||||
redirectPath := strings.Replace(
|
redirectPath := strings.Replace(
|
||||||
ctx.Req.URL.Path,
|
ctx.Req.URL.Path,
|
||||||
fmt.Sprintf("%s/%s", ownerName, previousRepoName),
|
fmt.Sprintf("%s/%s", ownerName, previousRepoName),
|
||||||
fmt.Sprintf("%s/%s", ownerName, repo.Name),
|
fmt.Sprintf("%s/%s", repo.MustOwnerName(), repo.Name),
|
||||||
1,
|
1,
|
||||||
)
|
)
|
||||||
ctx.Redirect(redirectPath)
|
ctx.Redirect(redirectPath)
|
||||||
|
|
|
@ -321,6 +321,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldOwnerID := ctx.Repo.Owner.ID
|
||||||
if err = models.TransferOwnership(ctx.User, newOwner, repo); err != nil {
|
if err = models.TransferOwnership(ctx.User, newOwner, repo); err != nil {
|
||||||
if models.IsErrRepoAlreadyExist(err) {
|
if models.IsErrRepoAlreadyExist(err) {
|
||||||
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), tplSettingsOptions, nil)
|
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), tplSettingsOptions, nil)
|
||||||
|
@ -329,6 +330,13 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = models.NewRepoRedirect(oldOwnerID, repo.ID, repo.Name, repo.Name)
|
||||||
|
if err != nil {
|
||||||
|
ctx.ServerError("NewRepoRedirect", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
log.Trace("Repository transferred: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner)
|
log.Trace("Repository transferred: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner)
|
||||||
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed"))
|
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed"))
|
||||||
ctx.Redirect(setting.AppSubURL + "/" + newOwner + "/" + repo.Name)
|
ctx.Redirect(setting.AppSubURL + "/" + newOwner + "/" + repo.Name)
|
||||||
|
|
Reference in a new issue