aboutsummaryrefslogtreecommitdiffstats
path: root/models/repo.go
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-09-29 04:04:48 -0400
committerUnknwon <joe2010xtmf@163.com>2014-09-29 04:04:48 -0400
commit3cfa4a581ca3cf3cb5e5105725d77f4c594de478 (patch)
tree0f2f065f090e286eaec08be41204370522debdff /models/repo.go
parentce6931a046423bb0ef6420c9df670315446153bd (diff)
downloadgitea-3cfa4a581ca3cf3cb5e5105725d77f4c594de478.tar.gz
gitea-3cfa4a581ca3cf3cb5e5105725d77f4c594de478.zip
Bug: 500 when transfer repository to collaborator
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go16
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)
}
}