diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-09-29 04:04:48 -0400 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-09-29 04:04:48 -0400 |
commit | 3cfa4a581ca3cf3cb5e5105725d77f4c594de478 (patch) | |
tree | 0f2f065f090e286eaec08be41204370522debdff /models/repo.go | |
parent | ce6931a046423bb0ef6420c9df670315446153bd (diff) | |
download | gitea-3cfa4a581ca3cf3cb5e5105725d77f4c594de478.tar.gz gitea-3cfa4a581ca3cf3cb5e5105725d77f4c594de478.zip |
Bug: 500 when transfer repository to collaborator
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/models/repo.go b/models/repo.go index a157b0012a..a79c2491ce 100644 --- a/models/repo.go +++ b/models/repo.go @@ -678,17 +678,25 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { return fmt.Errorf("fail to delete current accesses: %v", err) } } else { + // Delete current owner access. if _, err = sess.Where("repo_name=?", oldRepoLink).And("user_name=?", owner.LowerName). - Update(&Access{UserName: newUser.LowerName}); err != nil { + Delete(new(Access)); err != nil { sess.Rollback() - return err + return fmt.Errorf("fail to delete access(owner): %v", err) + } + // In case new owner has access. + if _, err = sess.Where("repo_name=?", oldRepoLink).And("user_name=?", newUser.LowerName). + Delete(new(Access)); err != nil { + sess.Rollback() + return fmt.Errorf("fail to delete access(new user): %v", err) } } + // Change accesses to new repository path. if _, err = sess.Where("repo_name=?", oldRepoLink). Update(&Access{RepoName: path.Join(newUser.LowerName, repo.LowerName)}); err != nil { sess.Rollback() - return err + return fmt.Errorf("fail to update access(change reponame): %v", err) } // Update repository. @@ -754,7 +762,7 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { } if _, err = sess.Insert(access); err != nil { sess.Rollback() - return err + return fmt.Errorf("fail to insert access: %v", err) } } |