summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Olheiser <john.olheiser@gmail.com>2021-12-06 11:04:07 -0600
committerGitHub <noreply@github.com>2021-12-06 11:04:07 -0600
commiteb69c7ec8c1f732c67978355f6efff1f7dfe2fac (patch)
treeb5316bde870689751c3167b75f1d6463c3fb13a7
parent12a42baa5ed5f5b5224f7c775b8be04b3eb4980c (diff)
downloadgitea-eb69c7ec8c1f732c67978355f6efff1f7dfe2fac.tar.gz
gitea-eb69c7ec8c1f732c67978355f6efff1f7dfe2fac.zip
Allow default branch to be inferred on compare page (#17908)
* Allow default branch to be inferred Signed-off-by: jolheiser <john.olheiser@gmail.com> * Add test for inferred default branch Signed-off-by: jolheiser <john.olheiser@gmail.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
-rw-r--r--integrations/compare_test.go12
-rw-r--r--routers/web/repo/compare.go12
2 files changed, 21 insertions, 3 deletions
diff --git a/integrations/compare_test.go b/integrations/compare_test.go
index e8efe7cd09..0fb2ae6c91 100644
--- a/integrations/compare_test.go
+++ b/integrations/compare_test.go
@@ -27,3 +27,15 @@ func TestCompareTag(t *testing.T) {
resp = session.MakeRequest(t, req, http.StatusNotFound)
assert.False(t, strings.Contains(resp.Body.String(), "/assets/img/500.png"), "expect 404 page not 500")
}
+
+// Compare with inferred default branch (master)
+func TestCompareDefault(t *testing.T) {
+ defer prepareTestEnv(t)()
+
+ session := loginUser(t, "user2")
+ req := NewRequest(t, "GET", "/user2/repo1/compare/v1.1")
+ resp := session.MakeRequest(t, req, http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+ selection := htmlDoc.doc.Find(".choose.branch .filter.dropdown")
+ assert.Lenf(t, selection.Nodes, 2, "The template has changed")
+}
diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index 865a734caf..54d7e77f2d 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -186,6 +186,9 @@ func ParseCompareInfo(ctx *context.Context) *CompareInfo {
// 1. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headBranch}
// 2. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headOwner}:{:headBranch}
// 3. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headOwner}/{:headRepoName}:{:headBranch}
+ // 4. /{:baseOwner}/{:baseRepoName}/compare/{:headBranch}
+ // 5. /{:baseOwner}/{:baseRepoName}/compare/{:headOwner}:{:headBranch}
+ // 6. /{:baseOwner}/{:baseRepoName}/compare/{:headOwner}/{:headRepoName}:{:headBranch}
//
// Here we obtain the infoPath "{:baseBranch}...[{:headOwner}/{:headRepoName}:]{:headBranch}" as ctx.Params("*")
// with the :baseRepo in ctx.Repo.
@@ -213,9 +216,12 @@ func ParseCompareInfo(ctx *context.Context) *CompareInfo {
infos := strings.SplitN(infoPath, "...", 2)
if len(infos) != 2 {
- infos = strings.SplitN(infoPath, "..", 2)
- ci.DirectComparison = true
- ctx.Data["PageIsComparePull"] = false
+ 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 {