fix: Remove "create branch" button on mirrored repos (#7640)
Some checks are pending
Integration tests for the release process / release-simulation (push) Waiting to run
/ release (push) Waiting to run
testing / test-unit (push) Blocked by required conditions
testing / test-e2e (push) Blocked by required conditions
testing / backend-checks (push) Waiting to run
testing / frontend-checks (push) Waiting to run
testing / test-remote-cacher (redis) (push) Blocked by required conditions
testing / test-remote-cacher (valkey) (push) Blocked by required conditions
testing / test-remote-cacher (garnet) (push) Blocked by required conditions
testing / test-remote-cacher (redict) (push) Blocked by required conditions
testing / test-mysql (push) Blocked by required conditions
testing / test-pgsql (push) Blocked by required conditions
testing / test-sqlite (push) Blocked by required conditions
testing / security-check (push) Blocked by required conditions

Currently, if you have a mirrored repo, the button on the "branches"
page to create a new branch is available to be pressed. Once you name
your new branch and click submit, you get a 404 page that doesn't explain
what went wrong.

As new branch creation is not supported on mirrored repos, let's just
take that button away if the repo is a mirror. This is already done for
archived repos, so we just need to add another check.

Fixes #7639.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7640
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: John Moon <john.moon@vts-i.com>
Co-committed-by: John Moon <john.moon@vts-i.com>
This commit is contained in:
John Moon 2025-05-14 23:26:12 +00:00 committed by Otto
parent 63543afa2b
commit 09f7dbecda
3 changed files with 28 additions and 2 deletions

View file

@ -204,3 +204,28 @@ func TestDatabaseMissingABranch(t *testing.T) {
assert.Equal(t, firstBranchCount-1, secondBranchCount)
})
}
func TestCreateBranchButtonVisibility(t *testing.T) {
onGiteaRun(t, func(t *testing.T, u *url.URL) {
session := loginUser(t, "user1")
t.Run("Check create branch button", func(t *testing.T) {
t.Run("Normal repository", func(t *testing.T) {
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
// Check that the button is present
resp := session.MakeRequest(t, NewRequest(t, "GET", "/"+repo1.FullName()+"/branches"), http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
assert.Positive(t, htmlDoc.doc.Find(".show-create-branch-modal").Length())
})
t.Run("Mirrored repository", func(t *testing.T) {
repo5 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 5})
// Check that the button is NOT present
resp := session.MakeRequest(t, NewRequest(t, "GET", "/"+repo5.FullName()+"/branches"), http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
assert.Equal(t, 0, htmlDoc.doc.Find(".show-create-branch-modal").Length())
})
})
})
}