Skip to content

Commit f6474cf

Browse files
authored
Fix bug when migrating repository (#34182)
This PR fixed a bug which is a regression from #31035
1 parent 8a6df00 commit f6474cf

File tree

12 files changed

+19
-17
lines changed

12 files changed

+19
-17
lines changed

routers/api/v1/repo/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func Migrate(ctx *context.APIContext) {
181181
IsPrivate: opts.Private || setting.Repository.ForcePrivate,
182182
IsMirror: opts.Mirror,
183183
Status: repo_model.RepositoryBeingMigrated,
184-
})
184+
}, false)
185185
if err != nil {
186186
handleMigrateError(ctx, repoOwner, err)
187187
return

services/migrations/gitea_uploader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (g *GiteaLocalUploader) CreateRepo(ctx context.Context, repo *base.Reposito
107107
IsPrivate: opts.Private || setting.Repository.ForcePrivate,
108108
IsMirror: opts.Mirror,
109109
Status: repo_model.RepositoryBeingMigrated,
110-
})
110+
}, false)
111111
} else {
112112
r, err = repo_model.GetRepositoryByID(ctx, opts.MigrateToRepoID)
113113
}

services/org/team_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
205205
// Create repos.
206206
repoIDs := make([]int64, 0)
207207
for i := 0; i < 3; i++ {
208-
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), repo_service.CreateRepoOptions{Name: fmt.Sprintf("repo-%d", i)})
208+
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(),
209+
repo_service.CreateRepoOptions{Name: fmt.Sprintf("repo-%d", i)}, true)
209210
assert.NoError(t, err, "CreateRepository %d", i)
210211
if r != nil {
211212
repoIDs = append(repoIDs, r.ID)
@@ -267,7 +268,7 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
267268
}
268269

269270
// Create repo and check teams repositories.
270-
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), repo_service.CreateRepoOptions{Name: "repo-last"})
271+
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), repo_service.CreateRepoOptions{Name: "repo-last"}, true)
271272
assert.NoError(t, err, "CreateRepository last")
272273
if r != nil {
273274
repoIDs = append(repoIDs, r.ID)

services/packages/cargo/index.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ func getOrCreateIndexRepository(ctx context.Context, doer, owner *user_model.Use
213213
if errors.Is(err, util.ErrNotExist) {
214214
repo, err = repo_service.CreateRepositoryDirectly(ctx, doer, owner, repo_service.CreateRepoOptions{
215215
Name: IndexRepositoryName,
216-
})
216+
}, true)
217217
if err != nil {
218218
return nil, fmt.Errorf("CreateRepository: %w", err)
219219
}

services/repository/create.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,10 @@ func initRepository(ctx context.Context, u *user_model.User, repo *repo_model.Re
199199
}
200200

201201
// CreateRepositoryDirectly creates a repository for the user/organization.
202-
func CreateRepositoryDirectly(ctx context.Context, doer, owner *user_model.User, opts CreateRepoOptions) (*repo_model.Repository, error) {
202+
// if needsUpdateToReady is true, it will update the repository status to ready when success
203+
func CreateRepositoryDirectly(ctx context.Context, doer, owner *user_model.User,
204+
opts CreateRepoOptions, needsUpdateToReady bool,
205+
) (*repo_model.Repository, error) {
203206
if !doer.CanCreateRepoIn(owner) {
204207
return nil, repo_model.ErrReachLimitOfRepo{
205208
Limit: owner.MaxRepoCreation,
@@ -243,8 +246,6 @@ func CreateRepositoryDirectly(ctx context.Context, doer, owner *user_model.User,
243246
ObjectFormatName: opts.ObjectFormatName,
244247
}
245248

246-
needsUpdateStatus := opts.Status != repo_model.RepositoryReady
247-
248249
// 1 - create the repository database operations first
249250
err := db.WithTx(ctx, func(ctx context.Context) error {
250251
return createRepositoryInDB(ctx, doer, owner, repo, false)
@@ -318,7 +319,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, owner *user_model.User,
318319
}
319320

320321
// 7 - update repository status to be ready
321-
if needsUpdateStatus {
322+
if needsUpdateToReady {
322323
repo.Status = repo_model.RepositoryReady
323324
if err = repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
324325
return nil, fmt.Errorf("UpdateRepositoryCols: %w", err)

services/repository/create_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func TestCreateRepositoryDirectly(t *testing.T) {
2525

2626
createdRepo, err := CreateRepositoryDirectly(git.DefaultContext, user2, user2, CreateRepoOptions{
2727
Name: "created-repo",
28-
})
28+
}, true)
2929
assert.NoError(t, err)
3030
assert.NotNil(t, createdRepo)
3131

@@ -44,7 +44,7 @@ func TestCreateRepositoryDirectly(t *testing.T) {
4444

4545
createdRepo2, err := CreateRepositoryDirectly(db.DefaultContext, user2, user2, CreateRepoOptions{
4646
Name: "created-repo",
47-
})
47+
}, true)
4848
assert.Nil(t, createdRepo2)
4949
assert.Error(t, err)
5050

services/repository/repository.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type WebSearchResults struct {
4747

4848
// CreateRepository creates a repository for the user/organization.
4949
func CreateRepository(ctx context.Context, doer, owner *user_model.User, opts CreateRepoOptions) (*repo_model.Repository, error) {
50-
repo, err := CreateRepositoryDirectly(ctx, doer, owner, opts)
50+
repo, err := CreateRepositoryDirectly(ctx, doer, owner, opts, true)
5151
if err != nil {
5252
// No need to rollback here we should do this in CreateRepository...
5353
return nil, err

services/task/task.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func CreateMigrateTask(ctx context.Context, doer, u *user_model.User, opts base.
111111
IsPrivate: opts.Private || setting.Repository.ForcePrivate,
112112
IsMirror: opts.Mirror,
113113
Status: repo_model.RepositoryBeingMigrated,
114-
})
114+
}, false)
115115
if err != nil {
116116
task.EndTime = timeutil.TimeStampNow()
117117
task.Status = structs.TaskStatusFailed

tests/integration/compare_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func TestCompareCodeExpand(t *testing.T) {
133133
Readme: "Default",
134134
AutoInit: true,
135135
DefaultBranch: "main",
136-
})
136+
}, true)
137137
assert.NoError(t, err)
138138

139139
session := loginUser(t, user1.Name)

tests/integration/mirror_pull_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestMirrorPull(t *testing.T) {
4848
IsPrivate: opts.Private,
4949
IsMirror: opts.Mirror,
5050
Status: repo_model.RepositoryBeingMigrated,
51-
})
51+
}, false)
5252
assert.NoError(t, err)
5353
assert.True(t, mirrorRepo.IsMirror, "expected pull-mirror repo to be marked as a mirror immediately after its creation")
5454

tests/integration/mirror_push_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func testMirrorPush(t *testing.T, u *url.URL) {
4040

4141
mirrorRepo, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
4242
Name: "test-push-mirror",
43-
})
43+
}, true)
4444
assert.NoError(t, err)
4545

4646
session := loginUser(t, user.Name)

tests/integration/pull_review_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func TestPullView_CodeOwner(t *testing.T) {
5858
AutoInit: true,
5959
ObjectFormatName: git.Sha1ObjectFormat.Name(),
6060
DefaultBranch: "master",
61-
})
61+
}, true)
6262
assert.NoError(t, err)
6363

6464
// add CODEOWNERS to default branch

0 commit comments

Comments
 (0)