mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-02-15 18:48:24 -05:00
fix: use correct default branch for migrated wiki (#6754)
- Instead of getting the default branch of the 'code' repository, get the default branch of the wiki repository. - It's a bug of forgejo/forgejo#2264, likely caused by the confusion between `gitrepo` (the package name) and `gitRepo` (the git repo for the just migrated wiki repository). - Adjusted existing integration test. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6754 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Gusted <postmaster@gusted.xyz> Co-committed-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
parent
7579f25807
commit
59910a461d
2 changed files with 15 additions and 12 deletions
|
@ -15,7 +15,6 @@ import (
|
|||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/gitrepo"
|
||||
"code.gitea.io/gitea/modules/lfs"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/migration"
|
||||
|
@ -97,7 +96,7 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
|
|||
}
|
||||
defer gitRepo.Close()
|
||||
|
||||
branch, err := gitrepo.GetDefaultBranch(ctx, repo)
|
||||
branch, err := gitRepo.GetHEADBranch()
|
||||
if err != nil {
|
||||
log.Warn("Failed to get the default branch of a migrated wiki repo: %v", err)
|
||||
if err := util.RemoveAll(wikiPath); err != nil {
|
||||
|
@ -106,7 +105,7 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
|
|||
|
||||
return repo, err
|
||||
}
|
||||
repo.WikiBranch = branch
|
||||
repo.WikiBranch = branch.Name
|
||||
|
||||
if err := git.WriteCommitGraph(ctx, wikiPath); err != nil {
|
||||
return repo, err
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
"code.gitea.io/gitea/models/unit"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/optional"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
|
@ -119,10 +120,13 @@ func TestMigrateWithWiki(t *testing.T) {
|
|||
defer test.MockVariableValue(&setting.AppVer, "1.16.0")()
|
||||
require.NoError(t, migrations.Init())
|
||||
|
||||
ownerName := "user2"
|
||||
repoName := "repo1"
|
||||
repoOwner := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: ownerName})
|
||||
session := loginUser(t, ownerName)
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||
repo, _, f := tests.CreateDeclarativeRepoWithOptions(t, user, tests.DeclarativeRepoOptions{
|
||||
WikiBranch: optional.Some("obscure-name"),
|
||||
})
|
||||
defer f()
|
||||
|
||||
session := loginUser(t, user.Name)
|
||||
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeReadMisc)
|
||||
|
||||
for _, s := range []struct {
|
||||
|
@ -134,7 +138,7 @@ func TestMigrateWithWiki(t *testing.T) {
|
|||
t.Run(s.svc.Name(), func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
// Step 0: verify the repo is available
|
||||
req := NewRequestf(t, "GET", "/%s/%s", ownerName, repoName)
|
||||
req := NewRequestf(t, "GET", "/%s", repo.FullName())
|
||||
_ = session.MakeRequest(t, req, http.StatusOK)
|
||||
// Step 1: get the Gitea migration form
|
||||
req = NewRequestf(t, "GET", "/repo/migrate/?service_type=%d", s.svc)
|
||||
|
@ -149,19 +153,19 @@ func TestMigrateWithWiki(t *testing.T) {
|
|||
req = NewRequestWithValues(t, "POST", "/repo/migrate", map[string]string{
|
||||
"_csrf": GetCSRF(t, session, "/repo/migrate"),
|
||||
"service": fmt.Sprintf("%d", s.svc),
|
||||
"clone_addr": fmt.Sprintf("%s%s/%s", u, ownerName, repoName),
|
||||
"clone_addr": fmt.Sprintf("%s%s", u, repo.FullName()),
|
||||
"auth_token": token,
|
||||
"issues": "on",
|
||||
"wiki": "on",
|
||||
"repo_name": migratedRepoName,
|
||||
"description": "",
|
||||
"uid": fmt.Sprintf("%d", repoOwner.ID),
|
||||
"uid": fmt.Sprintf("%d", user.ID),
|
||||
})
|
||||
resp = session.MakeRequest(t, req, http.StatusSeeOther)
|
||||
// Step 5: a redirection displays the migrated repository
|
||||
assert.EqualValues(t, fmt.Sprintf("/%s/%s", ownerName, migratedRepoName), test.RedirectURL(resp))
|
||||
assert.EqualValues(t, fmt.Sprintf("/%s/%s", user.Name, migratedRepoName), test.RedirectURL(resp))
|
||||
// Step 6: check the repo was created and load the repo
|
||||
migratedRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: migratedRepoName})
|
||||
migratedRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: migratedRepoName, WikiBranch: "obscure-name"})
|
||||
// Step 7: check if the wiki is enabled
|
||||
assert.True(t, migratedRepo.UnitEnabled(db.DefaultContext, unit.TypeWiki))
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue