From 70532b86ed52623a395e6b2f3578cb6301285f9a Mon Sep 17 00:00:00 2001 From: Gitea Date: Thu, 19 Sep 2019 22:42:25 +0800 Subject: [PATCH 1/6] 'update' --- go.mod | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.mod b/go.mod index f5d49294d4361..d0e847ca98bf1 100644 --- a/go.mod +++ b/go.mod @@ -75,6 +75,8 @@ require ( github.com/mattn/go-sqlite3 v1.11.0 github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect github.com/msteinert/pam v0.0.0-20151204160544-02ccfbfaf0cc github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 From b2cfbe158634f0e522d90f3db215d5546b5951f6 Mon Sep 17 00:00:00 2001 From: Benno Lin Date: Mon, 30 Sep 2019 21:01:16 +0800 Subject: [PATCH 2/6] Send push tag event when release created --- services/release/release.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/services/release/release.go b/services/release/release.go index 4451633798c08..332a718c3493d 100644 --- a/services/release/release.go +++ b/services/release/release.go @@ -35,6 +35,31 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { return err } rel.LowerTagName = strings.ToLower(rel.TagName) + + // Prepare Webhook + if err := rel.LoadAttributes(); err != nil { + log.Error("LoadAttributes: %v", err) + } else { + var shaSum string + mode, _ := models.AccessLevel(rel.Publisher, rel.Repo) + apiRepo := rel.Repo.APIFormat(mode) + apiPusher := rel.Publisher.APIFormat() + shaSum, err = gitRepo.GetTagCommitID(rel.TagName) + if err != nil { + log.Error("GetTagCommitID[%s]: %v", rel.TagName, err) + } + if err = models.PrepareWebhooks(rel.Repo, models.HookEventPush, &api.CreatePayload{ + Ref: git.TagPrefix + rel.TagName, + Sha: shaSum, + RefType: "tag", + Repo: apiRepo, + Sender: apiPusher, + }); err != nil { + log.Error("PrepareWebhooks: %v", err) + } else { + go models.HookQueue.Add(rel.Repo.ID) + } + } } commit, err := gitRepo.GetTagCommit(rel.TagName) if err != nil { From b15aabdf387aa7dac66f8ab3ab5e462ad2330420 Mon Sep 17 00:00:00 2001 From: Benno Lin Date: Mon, 30 Sep 2019 22:00:44 +0800 Subject: [PATCH 3/6] send tag create event while release created in UI --- services/release/release.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/services/release/release.go b/services/release/release.go index 96b79fecd78b9..498e9791d07d3 100644 --- a/services/release/release.go +++ b/services/release/release.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/timeutil" ) @@ -40,6 +41,11 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { if err := rel.LoadAttributes(); err != nil { log.Error("LoadAttributes: %v", err) } else { + + defer func() { + go models.HookQueue.Add(rel.Repo.ID) + }() + var shaSum string mode, _ := models.AccessLevel(rel.Publisher, rel.Repo) apiRepo := rel.Repo.APIFormat(mode) @@ -48,16 +54,29 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { if err != nil { log.Error("GetTagCommitID[%s]: %v", rel.TagName, err) } - if err = models.PrepareWebhooks(rel.Repo, models.HookEventPush, &api.CreatePayload{ + + // Tag Create + if err = models.PrepareWebhooks(rel.Repo, models.HookEventCreate, &api.CreatePayload{ Ref: git.TagPrefix + rel.TagName, Sha: shaSum, RefType: "tag", Repo: apiRepo, Sender: apiPusher, }); err != nil { - log.Error("PrepareWebhooks: %v", err) - } else { - go models.HookQueue.Add(rel.Repo.ID) + return fmt.Errorf("PrepareWebhooks: %v", err) + } + // Tag Push + if err = models.PrepareWebhooks(rel.Repo, models.HookEventPush, &api.PushPayload{ + Ref: git.TagPrefix + rel.TagName, + Before: git.EmptySHA, + After: shaSum, + CompareURL: setting.AppURL, + Commits: make([]*api.PayloadCommit, 0), + Repo: apiRepo, + Pusher: apiPusher, + Sender: apiPusher, + }); err != nil { + return fmt.Errorf("PrepareWebhooks: %v", err) } } } From 15e5ac686ced175de4c5ab5d79567fcfb299a5a5 Mon Sep 17 00:00:00 2001 From: Benno Lin Date: Tue, 1 Oct 2019 23:27:00 +0800 Subject: [PATCH 4/6] update to go v1.13 --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index 0606303cb6856..c8a44da1b5390 100644 --- a/go.mod +++ b/go.mod @@ -75,8 +75,6 @@ require ( github.com/mattn/go-sqlite3 v1.11.0 github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect github.com/msteinert/pam v0.0.0-20151204160544-02ccfbfaf0cc github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 From 57146dc8dacbe40af43d84219956bd9ed0578516 Mon Sep 17 00:00:00 2001 From: Benno Lin Date: Tue, 1 Oct 2019 23:42:43 +0800 Subject: [PATCH 5/6] fix gofmt error --- services/release/release.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/release/release.go b/services/release/release.go index 4d60bd5cc584b..abd397489b45e 100644 --- a/services/release/release.go +++ b/services/release/release.go @@ -12,8 +12,8 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/process" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/timeutil" ) From 74a4d018be3d8528f9a1c1796840a567fc52de6d Mon Sep 17 00:00:00 2001 From: Benno Lin Date: Thu, 24 Oct 2019 20:18:48 +0800 Subject: [PATCH 6/6] fix #8576 create pull request on current repository by default --- routers/repo/compare.go | 28 ++++++++++++++++++++ services/release/release.go | 44 -------------------------------- templates/repo/diff/compare.tmpl | 7 ++++- templates/repo/issue/list.tmpl | 2 +- 4 files changed, 35 insertions(+), 46 deletions(-) diff --git a/routers/repo/compare.go b/routers/repo/compare.go index f8534f68b77b6..b9e14abfb87bb 100644 --- a/routers/repo/compare.go +++ b/routers/repo/compare.go @@ -339,12 +339,40 @@ func PrepareCompareDiff( return false } +// parseBaseRepoInfo parse base repository if current repo is forked. +// The "base" here means the repository where current repo forks from, +// not the repository fetch from current URL. +func parseBaseRepoInfo(ctx *context.Context, repo *models.Repository) error { + if !repo.IsFork { + return nil + } + if err := repo.GetBaseRepo(); err != nil { + return err + } + if err := repo.BaseRepo.GetOwnerName(); err != nil { + return err + } + baseGitRepo, err := git.OpenRepository(models.RepoPath(repo.BaseRepo.OwnerName, repo.BaseRepo.Name)) + if err != nil { + return err + } + ctx.Data["BaseRepoBranches"], err = baseGitRepo.GetBranches() + if err != nil { + return err + } + return nil +} + // CompareDiff show different from one commit to another commit func CompareDiff(ctx *context.Context) { headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx) if ctx.Written() { return } + if err := parseBaseRepoInfo(ctx, headRepo); err != nil { + ctx.ServerError("parseBaseRepoInfo", err) + return + } nothingToCompare := PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch) if ctx.Written() { diff --git a/services/release/release.go b/services/release/release.go index abd397489b45e..b4f814a77f39b 100644 --- a/services/release/release.go +++ b/services/release/release.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/process" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/timeutil" ) @@ -38,49 +37,6 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { return err } rel.LowerTagName = strings.ToLower(rel.TagName) - - // Prepare Webhook - if err := rel.LoadAttributes(); err != nil { - log.Error("LoadAttributes: %v", err) - } else { - - defer func() { - go models.HookQueue.Add(rel.Repo.ID) - }() - - var shaSum string - mode, _ := models.AccessLevel(rel.Publisher, rel.Repo) - apiRepo := rel.Repo.APIFormat(mode) - apiPusher := rel.Publisher.APIFormat() - shaSum, err = gitRepo.GetTagCommitID(rel.TagName) - if err != nil { - log.Error("GetTagCommitID[%s]: %v", rel.TagName, err) - } - - // Tag Create - if err = models.PrepareWebhooks(rel.Repo, models.HookEventCreate, &api.CreatePayload{ - Ref: git.TagPrefix + rel.TagName, - Sha: shaSum, - RefType: "tag", - Repo: apiRepo, - Sender: apiPusher, - }); err != nil { - return fmt.Errorf("PrepareWebhooks: %v", err) - } - // Tag Push - if err = models.PrepareWebhooks(rel.Repo, models.HookEventPush, &api.PushPayload{ - Ref: git.TagPrefix + rel.TagName, - Before: git.EmptySHA, - After: shaSum, - CompareURL: setting.AppURL, - Commits: make([]*api.PayloadCommit, 0), - Repo: apiRepo, - Pusher: apiPusher, - Sender: apiPusher, - }); err != nil { - return fmt.Errorf("PrepareWebhooks: %v", err) - } - } } commit, err := gitRepo.GetTagCommit(rel.TagName) if err != nil { diff --git a/templates/repo/diff/compare.tmpl b/templates/repo/diff/compare.tmpl index 1c8942d42fef2..50a51c44acc20 100644 --- a/templates/repo/diff/compare.tmpl +++ b/templates/repo/diff/compare.tmpl @@ -28,6 +28,11 @@ {{range .Branches}}
{{$.BaseName}}:{{.}}
{{end}} + {{if .Repository.IsFork}} + {{range .BaseRepoBranches}} +
{{$.PullRequestCtx.BaseRepo.OwnerName}}:{{.}}
+ {{end}} + {{end}} @@ -54,7 +59,7 @@ {{if .IsNothingToCompare}}
{{.i18n.Tr "repo.pulls.nothing_to_compare"}}
- {{else if .PageIsComparePull}} + {{else if .PageIsComparePull}} {{if .HasPullRequest}}
{{.i18n.Tr "repo.pulls.has_pull_request" $.RepoLink $.RepoRelPath .PullRequest.Index | Safe}} diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl index 9b354a6800bad..d68e6dac26b38 100644 --- a/templates/repo/issue/list.tmpl +++ b/templates/repo/issue/list.tmpl @@ -14,7 +14,7 @@ {{if .PageIsIssueList}} {{.i18n.Tr "repo.issues.new"}} {{else}} - {{.i18n.Tr "repo.pulls.new"}} + {{.i18n.Tr "repo.pulls.new"}} {{end}}
{{else}}