@@ -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\n Error: %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\n Error: %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\n Error: %v" , repo , stdout , err )
496+ return fmt .Errorf ("CreateRepository(git update-server-info): %w" , err )
497+ }
498+ return nil
499+ }
0 commit comments