mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	bug fixed
This commit is contained in:
		@@ -627,17 +627,37 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Update accesses.
 | 
			
		||||
	accesses := make([]Access, 0, 10)
 | 
			
		||||
	/*accesses := make([]Access, 0, 10)
 | 
			
		||||
	if err = x.Find(&accesses, &Access{RepoName: u.LowerName + "/" + repo.LowerName}); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	}*/
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("0")
 | 
			
		||||
	sess := x.NewSession()
 | 
			
		||||
	defer sess.Close()
 | 
			
		||||
	if err = sess.Begin(); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	access := &Access{
 | 
			
		||||
		RepoName: newUser.LowerName + "/" + repo.LowerName,
 | 
			
		||||
		UserName: newUser.LowerName,
 | 
			
		||||
	}
 | 
			
		||||
	//fmt.Println("1")
 | 
			
		||||
	sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName)
 | 
			
		||||
	_, err = sess.And("user_name = ?", u.LowerName).Update(&Access{UserName: newUser.LowerName})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	//fmt.Println("2")
 | 
			
		||||
	_, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName).Update(access)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
		for i := range accesses {
 | 
			
		||||
			accesses[i].RepoName = newUser.LowerName + "/" + repo.LowerName
 | 
			
		||||
			if accesses[i].UserName == u.LowerName {
 | 
			
		||||
@@ -646,8 +666,9 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) {
 | 
			
		||||
			if err = UpdateAccessWithSession(sess, &accesses[i]); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
	}
 | 
			
		||||
		}*/
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("3")
 | 
			
		||||
	// Update repository.
 | 
			
		||||
	repo.OwnerId = newUser.Id
 | 
			
		||||
	if _, err := sess.Id(repo.Id).Update(repo); err != nil {
 | 
			
		||||
@@ -655,18 +676,22 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("4")
 | 
			
		||||
	// Update user repository number.
 | 
			
		||||
	rawSql := "UPDATE `user` SET num_repos = num_repos + 1 WHERE id = ?"
 | 
			
		||||
	if _, err = sess.Exec(rawSql, newUser.Id); err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	//fmt.Println("5")
 | 
			
		||||
	rawSql = "UPDATE `user` SET num_repos = num_repos - 1 WHERE id = ?"
 | 
			
		||||
	if _, err = sess.Exec(rawSql, u.Id); err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("6")
 | 
			
		||||
 | 
			
		||||
	// Add watch of new owner to repository.
 | 
			
		||||
	if !IsWatching(newUser.Id, repo.Id) {
 | 
			
		||||
		if err = WatchRepo(newUser.Id, repo.Id, true); err != nil {
 | 
			
		||||
@@ -675,17 +700,20 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("7")
 | 
			
		||||
	if err = TransferRepoAction(u, newUser, repo); err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("8")
 | 
			
		||||
	// Change repository directory name.
 | 
			
		||||
	if err = os.Rename(RepoPath(u.Name, repo.Name), RepoPath(newUser.Name, repo.Name)); err != nil {
 | 
			
		||||
		sess.Rollback()
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//fmt.Println("9")
 | 
			
		||||
	return sess.Commit()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user