Skip to content

Commit a494a69

Browse files
committed
merge some functions
1 parent eb8884c commit a494a69

File tree

5 files changed

+39
-75
lines changed

5 files changed

+39
-75
lines changed

services/repository/adopt.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
repo_model "code.gitea.io/gitea/models/repo"
1717
user_model "code.gitea.io/gitea/models/user"
1818
"code.gitea.io/gitea/modules/container"
19-
"code.gitea.io/gitea/modules/git"
2019
"code.gitea.io/gitea/modules/gitrepo"
2120
"code.gitea.io/gitea/modules/log"
2221
"code.gitea.io/gitea/modules/optional"
@@ -93,15 +92,8 @@ func AdoptRepository(ctx context.Context, doer, u *user_model.User, opts CreateR
9392
return nil, fmt.Errorf("adoptRepository: %w", err)
9493
}
9594

96-
if err = repo_module.CheckDaemonExportOK(ctx, repo); err != nil {
97-
return nil, fmt.Errorf("checkDaemonExportOK: %w", err)
98-
}
99-
100-
var stdout string
101-
if stdout, _, err = git.NewCommand("update-server-info").
102-
RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()}); err != nil {
103-
log.Error("CreateRepository(git update-server-info) in %v: Stdout: %s\nError: %v", repo, stdout, err)
104-
return nil, fmt.Errorf("CreateRepository(git update-server-info): %w", err)
95+
if err = updateGitRepoAfterCreate(ctx, repo); err != nil {
96+
return nil, fmt.Errorf("updateGitRepoAfterCreate: %w", err)
10597
}
10698

10799
// 4 - update repository status

services/repository/create.go

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -257,17 +257,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
257257

258258
// last - clean up if something goes wrong
259259
// WARNING: Don't override all later err with local variables
260-
defer func() {
261-
if err != nil {
262-
if errDelete := DeleteRepositoryDirectly(ctx, doer, repo.ID); errDelete != nil {
263-
log.Error("Rollback deleteRepository: %v", errDelete)
264-
// add system notice
265-
if err := system_model.CreateRepositoryNotice("DeleteRepositoryDirectly failed when create repository: %v", errDelete); err != nil {
266-
log.Error("CreateRepositoryNotice: %v", err)
267-
}
268-
}
269-
}
270-
}()
260+
defer cleanupRepository(err, doer, repo.ID)
271261

272262
// No need for init mirror.
273263
if opts.IsMirror {
@@ -306,15 +296,8 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
306296
}
307297
}
308298

309-
if err = repo_module.CheckDaemonExportOK(ctx, repo); err != nil {
310-
return nil, fmt.Errorf("checkDaemonExportOK: %w", err)
311-
}
312-
313-
var stdout string
314-
if stdout, _, err = git.NewCommand("update-server-info").
315-
RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()}); err != nil {
316-
log.Error("CreateRepository(git update-server-info) in %v: Stdout: %s\nError: %v", repo, stdout, err)
317-
return nil, fmt.Errorf("CreateRepository(git update-server-info): %w", err)
299+
if err = updateGitRepoAfterCreate(ctx, repo); err != nil {
300+
return nil, fmt.Errorf("updateGitRepoAfterCreate: %w", err)
318301
}
319302

320303
if needsUpdateStatus {
@@ -329,6 +312,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
329312
if len(opts.License) > 0 {
330313
licenses = append(licenses, opts.License)
331314

315+
var stdout string
332316
stdout, _, err = git.NewCommand("rev-parse", "HEAD").RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()})
333317
if err != nil {
334318
log.Error("CreateRepository(git rev-parse HEAD) in %v: Stdout: %s\nError: %v", repo, stdout, err)
@@ -488,3 +472,28 @@ func CreateRepositoryInDB(ctx context.Context, doer, u *user_model.User, repo *r
488472

489473
return nil
490474
}
475+
476+
func cleanupRepository(err error, doer *user_model.User, repoID int64) {
477+
if err != nil {
478+
if errDelete := DeleteRepositoryDirectly(db.DefaultContext, doer, repoID); errDelete != nil {
479+
log.Error("Rollback deleteRepository: %v", errDelete)
480+
// add system notice
481+
if err := system_model.CreateRepositoryNotice("DeleteRepositoryDirectly failed when create repository: %v", errDelete); err != nil {
482+
log.Error("CreateRepositoryNotice: %v", err)
483+
}
484+
}
485+
}
486+
}
487+
488+
func updateGitRepoAfterCreate(ctx context.Context, repo *repo_model.Repository) error {
489+
if err := repo_module.CheckDaemonExportOK(ctx, repo); err != nil {
490+
return fmt.Errorf("checkDaemonExportOK: %w", err)
491+
}
492+
493+
if stdout, _, err := git.NewCommand("update-server-info").
494+
RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()}); err != nil {
495+
log.Error("CreateRepository(git update-server-info) in %v: Stdout: %s\nError: %v", repo, stdout, err)
496+
return fmt.Errorf("CreateRepository(git update-server-info): %w", err)
497+
}
498+
return nil
499+
}

services/repository/fork.go

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
121121

122122
// last - clean up if something goes wrong
123123
// WARNING: Don't override all later err with local variables
124-
defer func() {
125-
if err != nil {
126-
if errDelete := DeleteRepositoryDirectly(ctx, doer, repo.ID); errDelete != nil {
127-
log.Error("Failed to remove fork repo: %v", errDelete)
128-
}
129-
}
130-
}()
124+
defer cleanupRepository(err, doer, repo.ID)
131125

132126
// 2 - Clone the repository
133127
cloneCmd := git.NewCommand("clone", "--bare")
@@ -142,15 +136,8 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
142136
}
143137

144138
// 3 - Update the repository
145-
if err = repo_module.CheckDaemonExportOK(ctx, repo); err != nil {
146-
return nil, fmt.Errorf("checkDaemonExportOK: %w", err)
147-
}
148-
149-
var output string
150-
if output, _, err = git.NewCommand("update-server-info").
151-
RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()}); err != nil {
152-
log.Error("Fork Repository (git update-server-info) failed for %v:\nStdout: %s\nError: %v", repo, output, err)
153-
return nil, fmt.Errorf("git update-server-info: %w", err)
139+
if err = updateGitRepoAfterCreate(ctx, repo); err != nil {
140+
return nil, fmt.Errorf("updateGitRepoAfterCreate: %w", err)
154141
}
155142

156143
// 4 - Create hooks

services/repository/migrate.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,8 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
118118
repo.Owner = u
119119
}
120120

121-
if err := repo_module.CheckDaemonExportOK(ctx, repo); err != nil {
122-
return repo, fmt.Errorf("checkDaemonExportOK: %w", err)
123-
}
124-
125-
if stdout, _, err := git.NewCommand("update-server-info").
126-
RunStdString(ctx, &git.RunOpts{Dir: repoPath}); err != nil {
127-
log.Error("MigrateRepositoryGitData(git update-server-info) in %v: Stdout: %s\nError: %v", repo, stdout, err)
128-
return repo, fmt.Errorf("error in MigrateRepositoryGitData(git update-server-info): %w", err)
121+
if err := updateGitRepoAfterCreate(ctx, repo); err != nil {
122+
return nil, fmt.Errorf("updateGitRepoAfterCreate: %w", err)
129123
}
130124

131125
gitRepo, err := git.OpenRepository(ctx, repoPath)

services/repository/template.go

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import (
1212
git_model "code.gitea.io/gitea/models/git"
1313
issues_model "code.gitea.io/gitea/models/issues"
1414
repo_model "code.gitea.io/gitea/models/repo"
15-
system_model "code.gitea.io/gitea/models/system"
1615
user_model "code.gitea.io/gitea/models/user"
17-
"code.gitea.io/gitea/modules/git"
1816
"code.gitea.io/gitea/modules/gitrepo"
1917
"code.gitea.io/gitea/modules/log"
2018
repo_module "code.gitea.io/gitea/modules/repository"
@@ -114,31 +112,15 @@ func GenerateRepository(ctx context.Context, doer, owner *user_model.User, templ
114112
}
115113

116114
// last - clean up the repository if something goes wrong
117-
defer func() {
118-
if err != nil {
119-
if errDelete := DeleteRepositoryDirectly(ctx, doer, generateRepo.ID); errDelete != nil {
120-
log.Error("Rollback deleteRepository: %v", errDelete)
121-
// add system notice
122-
if err := system_model.CreateRepositoryNotice("DeleteRepositoryDirectly failed when generate repository: %v", errDelete); err != nil {
123-
log.Error("CreateRepositoryNotice: %v", err)
124-
}
125-
}
126-
}
127-
}()
115+
defer cleanupRepository(err, doer, generateRepo.ID)
128116

129117
// 3 - Generate the git repository in storage
130118
if err = repo_module.CheckInitRepository(ctx, generateRepo); err != nil {
131119
return nil, err
132120
}
133121

134-
if err = repo_module.CheckDaemonExportOK(ctx, generateRepo); err != nil {
135-
return nil, fmt.Errorf("checkDaemonExportOK: %w", err)
136-
}
137-
138-
if stdout, _, err := git.NewCommand("update-server-info").
139-
RunStdString(ctx, &git.RunOpts{Dir: generateRepo.RepoPath()}); err != nil {
140-
log.Error("GenerateRepository(git update-server-info) in %v: Stdout: %s\nError: %v", generateRepo, stdout, err)
141-
return nil, fmt.Errorf("error in GenerateRepository(git update-server-info): %w", err)
122+
if err = updateGitRepoAfterCreate(ctx, generateRepo); err != nil {
123+
return nil, fmt.Errorf("updateGitRepoAfterCreate: %w", err)
142124
}
143125

144126
// Git Content

0 commit comments

Comments
 (0)