diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2014-07-05 10:25:45 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2014-07-05 10:25:45 +0800 |
commit | 3c6da63216ab509cdd2ce6cf75be4f63825c4c62 (patch) | |
tree | 1c737c073ba39c8a7698c96248ab63e2f600ad99 /models | |
parent | aed4271c8dc60f34a59c548bbc1b8859b0105be0 (diff) | |
download | gitea-3c6da63216ab509cdd2ce6cf75be4f63825c4c62.tar.gz gitea-3c6da63216ab509cdd2ce6cf75be4f63825c4c62.zip |
bug fixed
Diffstat (limited to 'models')
-rw-r--r-- | models/repo.go | 48 |
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() } |