mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	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:
		
				
					committed by
					
						
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							525f03306f
						
					
				
				
					commit
					48c101affe
				
			@@ -204,7 +204,7 @@ func RedirectToRepo(ctx *Context, redirectRepoID int64) {
 | 
			
		||||
	redirectPath := strings.Replace(
 | 
			
		||||
		ctx.Req.URL.Path,
 | 
			
		||||
		fmt.Sprintf("%s/%s", ownerName, previousRepoName),
 | 
			
		||||
		fmt.Sprintf("%s/%s", ownerName, repo.Name),
 | 
			
		||||
		fmt.Sprintf("%s/%s", repo.MustOwnerName(), repo.Name),
 | 
			
		||||
		1,
 | 
			
		||||
	)
 | 
			
		||||
	ctx.Redirect(redirectPath)
 | 
			
		||||
 
 | 
			
		||||
@@ -321,6 +321,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		oldOwnerID := ctx.Repo.Owner.ID
 | 
			
		||||
		if err = models.TransferOwnership(ctx.User, newOwner, repo); err != nil {
 | 
			
		||||
			if models.IsErrRepoAlreadyExist(err) {
 | 
			
		||||
				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
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		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)
 | 
			
		||||
		ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed"))
 | 
			
		||||
		ctx.Redirect(setting.AppSubURL + "/" + newOwner + "/" + repo.Name)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user