Merge pull request '[v7.0/forgejo] fix(repository): git push to an adopted repository fails' (#4151) from bp-v7.0/forgejo-8efef06 into v7.0/forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4151
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
This commit is contained in:
Earl Warren 2024-06-16 18:51:43 +00:00
commit 1f4c5cd1cb
3 changed files with 32 additions and 0 deletions

View file

@ -45,6 +45,7 @@ func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository,
if err != nil {
return 0, fmt.Errorf("UpdateRepository: %w", err)
}
repo.ObjectFormatName = objFmt.Name() // keep consistent with db
allBranches := container.Set[string]{}
{

View file

@ -0,0 +1 @@
git push to an adopted repository fails

View file

@ -10,9 +10,12 @@ import (
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/setting"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCheckUnadoptedRepositories_Add(t *testing.T) {
@ -83,3 +86,30 @@ func TestListUnadoptedRepositories_ListOptions(t *testing.T) {
assert.Equal(t, 2, count)
assert.Equal(t, unadoptedList[1], repoNames[0])
}
func TestAdoptRepository(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
username := "user2"
unadopted := "unadopted"
assert.NoError(t, unittest.CopyDir(
"../../modules/git/tests/repos/repo1_bare",
path.Join(setting.RepoRootPath, username, unadopted+".git"),
))
opts := db.ListOptions{Page: 1, PageSize: 1}
repoNames, _, err := ListUnadoptedRepositories(db.DefaultContext, "", &opts)
require.NoError(t, err)
require.Contains(t, repoNames, path.Join(username, unadopted))
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
repo, err := AdoptRepository(db.DefaultContext, doer, owner, CreateRepoOptions{
Name: unadopted,
Description: "description",
IsPrivate: false,
AutoInit: true,
})
assert.NoError(t, err)
assert.Equal(t, git.Sha1ObjectFormat.Name(), repo.ObjectFormatName)
}