From 7620492177ce916ff4b183153c606e69d30d16d3 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 23 Jul 2019 15:40:52 +0800 Subject: [PATCH 1/2] fix bug create/edit wiki pages when code master branch protected --- models/helper_environment.go | 12 ++++++------ models/wiki.go | 9 ++++++++- modules/pull/merge.go | 9 ++++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/models/helper_environment.go b/models/helper_environment.go index 0460fc3df50ca..6f1e8220728f1 100644 --- a/models/helper_environment.go +++ b/models/helper_environment.go @@ -12,13 +12,13 @@ import ( // PushingEnvironment returns an os environment to allow hooks to work on push func PushingEnvironment(doer *User, repo *Repository) []string { - return FullPushingEnvironment(doer, doer, repo, 0) + return FullPushingEnvironment(doer, doer, repo.MustOwnerName(), repo.Name, repo.ID, 0) } // FullPushingEnvironment returns an os environment to allow hooks to work on push -func FullPushingEnvironment(author, committer *User, repo *Repository, prID int64) []string { +func FullPushingEnvironment(author, committer *User, ownerName, repoName string, repoID, prID int64) []string { isWiki := "false" - if strings.HasSuffix(repo.Name, ".wiki") { + if strings.HasSuffix(repoName, ".wiki") { isWiki = "true" } @@ -32,12 +32,12 @@ func FullPushingEnvironment(author, committer *User, repo *Repository, prID int6 "GIT_AUTHOR_EMAIL="+authorSig.Email, "GIT_COMMITTER_NAME="+committerSig.Name, "GIT_COMMITTER_EMAIL="+committerSig.Email, - EnvRepoName+"="+repo.Name, - EnvRepoUsername+"="+repo.MustOwnerName(), + EnvRepoName+"="+repoName, + EnvRepoUsername+"="+ownerName, EnvRepoIsWiki+"="+isWiki, EnvPusherName+"="+committer.Name, EnvPusherID+"="+fmt.Sprintf("%d", committer.ID), - ProtectedBranchRepoID+"="+fmt.Sprintf("%d", repo.ID), + ProtectedBranchRepoID+"="+fmt.Sprintf("%d", repoID), ProtectedBranchPRID+"="+fmt.Sprintf("%d", prID), "SSH_ORIGINAL_COMMAND=gitea-internal", ) diff --git a/models/wiki.go b/models/wiki.go index 9ae3386333298..99c80cf0e0a38 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -217,7 +217,14 @@ func (repo *Repository) updateWikiPage(doer *User, oldWikiName, newWikiName, con if err := git.Push(basePath, git.PushOptions{ Remote: "origin", Branch: fmt.Sprintf("%s:%s%s", commitHash.String(), git.BranchPrefix, "master"), - Env: PushingEnvironment(doer, repo), + Env: FullPushingEnvironment( + doer, + doer, + repo.MustOwnerName(), + repo.Name+".wiki", + repo.ID, + 0, + ), }); err != nil { log.Error("%v", err) return fmt.Errorf("Push: %v", err) diff --git a/modules/pull/merge.go b/modules/pull/merge.go index 3b653aac2daaf..b8a6a25a99a78 100644 --- a/modules/pull/merge.go +++ b/modules/pull/merge.go @@ -240,7 +240,14 @@ func Merge(pr *models.PullRequest, doer *models.User, baseGitRepo *git.Repositor headUser = doer } - env := models.FullPushingEnvironment(headUser, doer, pr.BaseRepo, pr.ID) + env := models.FullPushingEnvironment( + headUser, + doer, + pr.BaseRepo.MustOwnerName(), + pr.BaseRepo.Name, + pr.BaseRepo.ID, + pr.ID, + ) // Push back to upstream. if err := git.NewCommand("push", "origin", pr.BaseBranch).RunInDirTimeoutEnvPipeline(env, -1, tmpBasePath, nil, &errbuf); err != nil { From 570675b323aa0fe5593a71598cb228388b9d6e01 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 23 Jul 2019 22:27:59 +0800 Subject: [PATCH 2/2] improve FullPushingEnvironment function --- models/helper_environment.go | 8 ++++---- models/wiki.go | 3 +-- modules/pull/merge.go | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/models/helper_environment.go b/models/helper_environment.go index 6f1e8220728f1..2095205db3184 100644 --- a/models/helper_environment.go +++ b/models/helper_environment.go @@ -12,11 +12,11 @@ import ( // PushingEnvironment returns an os environment to allow hooks to work on push func PushingEnvironment(doer *User, repo *Repository) []string { - return FullPushingEnvironment(doer, doer, repo.MustOwnerName(), repo.Name, repo.ID, 0) + return FullPushingEnvironment(doer, doer, repo, repo.Name, 0) } // FullPushingEnvironment returns an os environment to allow hooks to work on push -func FullPushingEnvironment(author, committer *User, ownerName, repoName string, repoID, prID int64) []string { +func FullPushingEnvironment(author, committer *User, repo *Repository, repoName string, prID int64) []string { isWiki := "false" if strings.HasSuffix(repoName, ".wiki") { isWiki = "true" @@ -33,11 +33,11 @@ func FullPushingEnvironment(author, committer *User, ownerName, repoName string, "GIT_COMMITTER_NAME="+committerSig.Name, "GIT_COMMITTER_EMAIL="+committerSig.Email, EnvRepoName+"="+repoName, - EnvRepoUsername+"="+ownerName, + EnvRepoUsername+"="+repo.MustOwnerName(), EnvRepoIsWiki+"="+isWiki, EnvPusherName+"="+committer.Name, EnvPusherID+"="+fmt.Sprintf("%d", committer.ID), - ProtectedBranchRepoID+"="+fmt.Sprintf("%d", repoID), + ProtectedBranchRepoID+"="+fmt.Sprintf("%d", repo.ID), ProtectedBranchPRID+"="+fmt.Sprintf("%d", prID), "SSH_ORIGINAL_COMMAND=gitea-internal", ) diff --git a/models/wiki.go b/models/wiki.go index 99c80cf0e0a38..d47f58f5a3afa 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -220,9 +220,8 @@ func (repo *Repository) updateWikiPage(doer *User, oldWikiName, newWikiName, con Env: FullPushingEnvironment( doer, doer, - repo.MustOwnerName(), + repo, repo.Name+".wiki", - repo.ID, 0, ), }); err != nil { diff --git a/modules/pull/merge.go b/modules/pull/merge.go index b8a6a25a99a78..d5725e2c51de8 100644 --- a/modules/pull/merge.go +++ b/modules/pull/merge.go @@ -243,9 +243,8 @@ func Merge(pr *models.PullRequest, doer *models.User, baseGitRepo *git.Repositor env := models.FullPushingEnvironment( headUser, doer, - pr.BaseRepo.MustOwnerName(), + pr.BaseRepo, pr.BaseRepo.Name, - pr.BaseRepo.ID, pr.ID, )