diff --git a/modules/repository/branch.go b/modules/repository/branch.go index a3fca7c7ce..2bf9930f19 100644 --- a/modules/repository/branch.go +++ b/modules/repository/branch.go @@ -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]{} { diff --git a/release-notes/8.0.0/fix/4149.md b/release-notes/8.0.0/fix/4149.md new file mode 100644 index 0000000000..0947df11a0 --- /dev/null +++ b/release-notes/8.0.0/fix/4149.md @@ -0,0 +1 @@ +git push to an adopted repository fails diff --git a/services/repository/adopt_test.go b/services/repository/adopt_test.go index c1520e01c9..454d9a76b9 100644 --- a/services/repository/adopt_test.go +++ b/services/repository/adopt_test.go @@ -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) +}