diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go index 8d08fec8fdb8..2f23ff846833 100644 --- a/routers/web/repo/compare.go +++ b/routers/web/repo/compare.go @@ -215,21 +215,25 @@ 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{ctx.Repo.Repository.DefaultBranch, ctx.Repo.Repository.DefaultBranch} + } else { + 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 + } } - } - if len(infos) != 2 { - log.Trace("ParseCompareInfo[%d]: not enough compared branches information %s", baseRepo.ID, infos) - ctx.NotFound("CompareAndPullRequest", nil) - return nil + 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 diff --git a/routers/web/web.go b/routers/web/web.go index 0d4d3bd90f4f..8e87023387a6 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)