From b300e3f48524cf16f3898cad6b843f52196a22a3 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 18 Dec 2021 06:20:27 +0800 Subject: [PATCH] Support open compare page directly (#17975) * Support open compare page directly * simple code * Some improvements Co-authored-by: 6543 <6543@obermui.de> --- routers/web/repo/compare.go | 26 ++++++++++++-------------- routers/web/web.go | 1 + 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go index 4f2d708079..30b1ca669e 100644 --- a/routers/web/repo/compare.go +++ b/routers/web/repo/compare.go @@ -215,23 +215,21 @@ func ParseCompareInfo(ctx *context.Context) *CompareInfo { ) infoPath = ctx.Params("*") - infos := strings.SplitN(infoPath, "...", 2) - - if len(infos) != 2 { - infos = []string{baseRepo.DefaultBranch, infoPath} - if strings.Contains(infoPath, "..") { - infos = strings.SplitN(infoPath, "..", 2) - ci.DirectComparison = true - ctx.Data["PageIsComparePull"] = false + var infos []string + if infoPath == "" { + infos = []string{baseRepo.DefaultBranch, baseRepo.DefaultBranch} + } else { + infos = strings.SplitN(infoPath, "...", 2) + if len(infos) != 2 { + if infos = strings.SplitN(infoPath, "..", 2); len(infos) == 2 { + ci.DirectComparison = true + ctx.Data["PageIsComparePull"] = false + } else { + infos = []string{baseRepo.DefaultBranch, infoPath} + } } } - if len(infos) != 2 { - log.Trace("ParseCompareInfo[%d]: not enough compared branches information %s", baseRepo.ID, infos) - ctx.NotFound("CompareAndPullRequest", nil) - return nil - } - ctx.Data["BaseName"] = baseRepo.OwnerName ci.BaseBranch = infos[0] ctx.Data["BaseBranch"] = ci.BaseBranch diff --git a/routers/web/web.go b/routers/web/web.go index 44ac751c31..6ede410e3e 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -702,6 +702,7 @@ func RegisterRoutes(m *web.Route) { m.Group("/milestone", func() { m.Get("/{id}", repo.MilestoneIssuesAndPulls) }, reqRepoIssuesOrPullsReader, context.RepoRef()) + m.Get("/compare", repo.MustBeNotEmpty, reqRepoCodeReader, repo.SetEditorconfigIfExists, ignSignIn, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.CompareDiff) m.Combo("/compare/*", repo.MustBeNotEmpty, reqRepoCodeReader, repo.SetEditorconfigIfExists). Get(ignSignIn, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.CompareDiff). Post(reqSignIn, context.RepoMustNotBeArchived(), reqRepoPullsReader, repo.MustAllowPulls, bindIgnErr(forms.CreateIssueForm{}), repo.SetWhitespaceBehavior, repo.CompareAndPullRequestPost)