From 3c6da63216ab509cdd2ce6cf75be4f63825c4c62 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 5 Jul 2014 10:25:45 +0800 Subject: [PATCH] bug fixed --- models/repo.go | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 file 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() }