diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-09-25 16:36:19 -0400 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-09-25 16:36:19 -0400 |
commit | f69761563b7a4fe9ace2a1643391cbcf9b92b372 (patch) | |
tree | 23d5bf522788895c4659c55f1e8275d9b9ab9e0b | |
parent | 57d48fb6a2fb34f5da1aa702c33bc9c268e29f71 (diff) | |
download | gitea-f69761563b7a4fe9ace2a1643391cbcf9b92b372.tar.gz gitea-f69761563b7a4fe9ace2a1643391cbcf9b92b372.zip |
Fix bug on transfer repo
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | cmd/web.go | 3 | ||||
-rw-r--r-- | conf/locale/locale_en-US.ini | 1 | ||||
-rw-r--r-- | conf/locale/locale_zh-CN.ini | 1 | ||||
-rw-r--r-- | gogs.go | 2 | ||||
-rw-r--r-- | models/action.go | 4 | ||||
-rw-r--r-- | models/repo.go | 40 | ||||
-rw-r--r-- | modules/base/template.go | 8 | ||||
-rw-r--r-- | templates/.VERSION | 2 | ||||
-rw-r--r-- | templates/user/dashboard/dashboard.tmpl | 2 |
10 files changed, 45 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore index 57d1493b06..3f7608d7ec 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ __pycache__ output* config.codekit .brackets.json +docker/fig.yml +docker/docker/Dockerfile +docker/docker/init_gogs.sh diff --git a/cmd/web.go b/cmd/web.go index 2376fd2126..8a87f86bb1 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -190,7 +190,8 @@ func runWeb(*cli.Context) { r.Get("/logout", user.SignOut) }) - m.Get("/user/:username", ignSignIn, user.Profile) // TODO: Legacy + // FIXME: Legacy + m.Get("/user/:username", ignSignIn, user.Profile) // Gravatar service. avt := avatar.CacheServer("public/img/avatar/", "public/img/avatar_default.jpg") diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini index 15d8028c4f..13be2fbd00 100644 --- a/conf/locale/locale_en-US.ini +++ b/conf/locale/locale_en-US.ini @@ -565,6 +565,7 @@ create_repo = created repository <a href="%s/%s">%s</a> commit_repo = pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> create_issue = opened issue <a href="%s/%s/issues/%s">%s#%s</a> comment_issue = commented on issue <a href="%s/%s/issues/%s">%s#%s</a> +transfer_repo = transfered repository <code>%s</code> to <a href="%s%s">%s</a> [tool] ago = ago diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini index e479f5cdf7..7d65abd30b 100644 --- a/conf/locale/locale_zh-CN.ini +++ b/conf/locale/locale_zh-CN.ini @@ -563,6 +563,7 @@ create_repo = 创建了仓库 <a href="%s/%s">%s</a> commit_repo = 推送了 <a href="%s/%s/src/%s">%s</a> 分支的代码到 <a href="%s/%s">%s</a> create_issue = 创建了工单 <a href="%s/%s/issues/%s">%s#%s</a> comment_issue = 评论了工单 <a href="%s/%s/issues/%s">%s#%s</a> +transfer_repo = 将仓库 <code>%s</code> 转移至 <a href="%s%s">%s</a> [tool] ago = 之前 @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.5.4.0924 Beta" +const APP_VER = "0.5.4.0925 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/action.go b/models/action.go index 18c956bda1..46500a9260 100644 --- a/models/action.go +++ b/models/action.go @@ -351,8 +351,8 @@ func NewRepoAction(u *User, repo *Repository) (err error) { // TransferRepoAction adds new action for transfering repository. func TransferRepoAction(u, newUser *User, repo *Repository) (err error) { if err = NotifyWatchers(&Action{ActUserId: u.Id, ActUserName: u.Name, ActEmail: u.Email, - OpType: TRANSFER_REPO, RepoId: repo.Id, RepoUserName: repo.Owner.Name, - RepoName: repo.Name, Content: newUser.Name, + OpType: TRANSFER_REPO, RepoId: repo.Id, RepoUserName: newUser.Name, + RepoName: repo.Name, IsPrivate: repo.IsPrivate}); err != nil { log.Error(4, "NotifyWatchers: %d/%s", u.Id, repo.Name) return err diff --git a/models/repo.go b/models/repo.go index c0a581b9a2..093e3b7f57 100644 --- a/models/repo.go +++ b/models/repo.go @@ -669,15 +669,23 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { return err } - if _, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName). - And("user_name = ?", u.LowerName).Update(&Access{UserName: newUser.LowerName}); err != nil { - sess.Rollback() - return err + curRepoLink := path.Join(u.LowerName, repo.LowerName) + // Delete all access first if current owner is an organization. + if u.IsOrganization() { + if _, err = sess.Where("repo_name=?", curRepoLink).Delete(new(Access)); err != nil { + sess.Rollback() + return fmt.Errorf("fail to delete current accesses: %v", err) + } + } else { + if _, err = sess.Where("repo_name=?", curRepoLink).And("user_name=?", u.LowerName). + Update(&Access{UserName: newUser.LowerName}); err != nil { + sess.Rollback() + return err + } } - if _, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName).Update(&Access{ - RepoName: newUser.LowerName + "/" + repo.LowerName, - }); err != nil { + if _, err = sess.Where("repo_name=?", curRepoLink). + Update(&Access{RepoName: path.Join(newUser.LowerName, repo.LowerName)}); err != nil { sess.Rollback() return err } @@ -700,12 +708,12 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { return err } + mode := WRITABLE + if repo.IsMirror { + mode = READABLE + } // New owner is organization. if newUser.IsOrganization() { - mode := WRITABLE - if repo.IsMirror { - mode = READABLE - } access := &Access{ RepoName: path.Join(newUser.LowerName, repo.LowerName), Mode: mode, @@ -737,6 +745,16 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { sess.Rollback() return err } + } else { + access := &Access{ + RepoName: path.Join(newUser.LowerName, repo.LowerName), + UserName: newUser.LowerName, + Mode: mode, + } + if _, err = sess.Insert(access); err != nil { + sess.Rollback() + return err + } } // Change repository directory name. diff --git a/modules/base/template.go b/modules/base/template.go index ec41914937..b1c8c161d3 100644 --- a/modules/base/template.go +++ b/modules/base/template.go @@ -149,14 +149,12 @@ type Actioner interface { // and returns a icon class name. func ActionIcon(opType int) string { switch opType { - case 1: // Create repository. + case 1, 8: // Create, transfer repository. return "repo" case 5, 9: // Commit repository. return "git-commit" case 6: // Create issue. return "issue-opened" - case 8: // Transfer repository. - return "share" case 10: // Comment issue. return "comment" default: @@ -164,7 +162,7 @@ func ActionIcon(opType int) string { } } -// TODO: Legacy +// FIXME: Legacy const ( TPL_CREATE_REPO = `<a href="%s/user/%s">%s</a> created repository <a href="%s">%s</a>` TPL_COMMIT_REPO = `<a href="%s/user/%s">%s</a> pushed to <a href="%s/src/%s">%s</a> at <a href="%s">%s</a>%s` @@ -197,7 +195,7 @@ func ActionContent2Commits(act Actioner) *PushCommits { return push } -// TODO: Legacy +// FIXME: Legacy // ActionDesc accepts int that represents action operation type // and returns the description. func ActionDesc(act Actioner) string { diff --git a/templates/.VERSION b/templates/.VERSION index 49d86b406c..87b06b8162 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.5.4.0924 Beta
\ No newline at end of file +0.5.4.0925 Beta
\ No newline at end of file diff --git a/templates/user/dashboard/dashboard.tmpl b/templates/user/dashboard/dashboard.tmpl index 0d728ef451..370173e473 100644 --- a/templates/user/dashboard/dashboard.tmpl +++ b/templates/user/dashboard/dashboard.tmpl @@ -20,6 +20,8 @@ {{else if eq .GetOpType 6}} {{ $index := index .GetIssueInfos 0}} {{$.i18n.Tr "action.create_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} + {{else if eq .GetOpType 8}} + {{$.i18n.Tr "action.transfer_repo" .GetRepoName AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 10}} {{ $index := index .GetIssueInfos 0}} {{$.i18n.Tr "action.comment_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} |