@@ -27,6 +27,13 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
2727 opts .DefaultBranch = setting .Repository .DefaultBranch
2828 }
2929
30+ // Check if label template exist
31+ if len (opts .IssueLabels ) > 0 {
32+ if _ , err := models .GetLabelTemplateFile (opts .IssueLabels ); err != nil {
33+ return nil , err
34+ }
35+ }
36+
3037 repo := & models.Repository {
3138 OwnerID : u .ID ,
3239 Owner : u ,
@@ -45,6 +52,8 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
4552 TrustModel : opts .TrustModel ,
4653 }
4754
55+ var rollbackRepo * models.Repository
56+
4857 if err := models .WithTx (func (ctx models.DBContext ) error {
4958 if err := models .CreateRepository (ctx , doer , u , repo , false ); err != nil {
5059 return err
@@ -76,7 +85,7 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
7685 }
7786 }
7887
79- if err : = initRepository (ctx , repoPath , doer , repo , opts ); err != nil {
88+ if err = initRepository (ctx , repoPath , doer , repo , opts ); err != nil {
8089 if err2 := util .RemoveAll (repoPath ); err2 != nil {
8190 log .Error ("initRepository: %v" , err )
8291 return fmt .Errorf (
@@ -87,10 +96,9 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
8796
8897 // Initialize Issue Labels if selected
8998 if len (opts .IssueLabels ) > 0 {
90- if err := models .InitializeLabels (ctx , repo .ID , opts .IssueLabels , false ); err != nil {
91- if errDelete := models .DeleteRepository (doer , u .ID , repo .ID ); errDelete != nil {
92- log .Error ("Rollback deleteRepository: %v" , errDelete )
93- }
99+ if err = models .InitializeLabels (ctx , repo .ID , opts .IssueLabels , false ); err != nil {
100+ rollbackRepo = repo
101+ rollbackRepo .OwnerID = u .ID
94102 return fmt .Errorf ("InitializeLabels: %v" , err )
95103 }
96104 }
@@ -99,13 +107,18 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
99107 SetDescription (fmt .Sprintf ("CreateRepository(git update-server-info): %s" , repoPath )).
100108 RunInDir (repoPath ); err != nil {
101109 log .Error ("CreateRepository(git update-server-info) in %v: Stdout: %s\n Error: %v" , repo , stdout , err )
102- if errDelete := models .DeleteRepository (doer , u .ID , repo .ID ); errDelete != nil {
103- log .Error ("Rollback deleteRepository: %v" , errDelete )
104- }
110+ rollbackRepo = repo
111+ rollbackRepo .OwnerID = u .ID
105112 return fmt .Errorf ("CreateRepository(git update-server-info): %v" , err )
106113 }
107114 return nil
108115 }); err != nil {
116+ if rollbackRepo != nil {
117+ if errDelete := models .DeleteRepository (doer , rollbackRepo .OwnerID , rollbackRepo .ID ); errDelete != nil {
118+ log .Error ("Rollback deleteRepository: %v" , errDelete )
119+ }
120+ }
121+
109122 return nil , err
110123 }
111124
0 commit comments