aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-07-05 10:25:45 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-07-05 10:25:45 +0800
commit3c6da63216ab509cdd2ce6cf75be4f63825c4c62 (patch)
tree1c737c073ba39c8a7698c96248ab63e2f600ad99 /models
parentaed4271c8dc60f34a59c548bbc1b8859b0105be0 (diff)
downloadgitea-3c6da63216ab509cdd2ce6cf75be4f63825c4c62.tar.gz
gitea-3c6da63216ab509cdd2ce6cf75be4f63825c4c62.zip
bug fixed
Diffstat (limited to 'models')
-rw-r--r--models/repo.go48
1 files changed, 38 insertions, 10 deletions
diff --git a/models/repo.go b/models/repo.go
index 70f9341d7f..b08711aa31 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -627,27 +627,48 @@ 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
}
- for i := range accesses {
- accesses[i].RepoName = newUser.LowerName + "/" + repo.LowerName
- if accesses[i].UserName == u.LowerName {
- accesses[i].UserName = newUser.LowerName
- }
- if err = UpdateAccessWithSession(sess, &accesses[i]); 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 {
+ accesses[i].UserName = newUser.LowerName
+ }
+ 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()
}