@@ -29,6 +29,13 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
29
29
opts .DefaultBranch = setting .Repository .DefaultBranch
30
30
}
31
31
32
+ // Check if label template exist
33
+ if len (opts .IssueLabels ) > 0 {
34
+ if _ , err := models .GetLabelTemplateFile (opts .IssueLabels ); err != nil {
35
+ return nil , err
36
+ }
37
+ }
38
+
32
39
repo := & models.Repository {
33
40
OwnerID : u .ID ,
34
41
Owner : u ,
@@ -47,6 +54,8 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
47
54
TrustModel : opts .TrustModel ,
48
55
}
49
56
57
+ var rollbackRepo * models.Repository
58
+
50
59
if err := models .WithTx (func (ctx models.DBContext ) error {
51
60
if err := models .CreateRepository (ctx , doer , u , repo , false ); err != nil {
52
61
return err
@@ -85,9 +94,8 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
85
94
// Initialize Issue Labels if selected
86
95
if len (opts .IssueLabels ) > 0 {
87
96
if err := models .InitializeLabels (ctx , repo .ID , opts .IssueLabels , false ); err != nil {
88
- if errDelete := models .DeleteRepository (doer , u .ID , repo .ID ); errDelete != nil {
89
- log .Error ("Rollback deleteRepository: %v" , errDelete )
90
- }
97
+ rollbackRepo = repo
98
+ rollbackRepo .OwnerID = u .ID
91
99
return fmt .Errorf ("InitializeLabels: %v" , err )
92
100
}
93
101
}
@@ -96,13 +104,18 @@ func CreateRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mod
96
104
SetDescription (fmt .Sprintf ("CreateRepository(git update-server-info): %s" , repoPath )).
97
105
RunInDir (repoPath ); err != nil {
98
106
log .Error ("CreateRepository(git update-server-info) in %v: Stdout: %s\n Error: %v" , repo , stdout , err )
99
- if errDelete := models .DeleteRepository (doer , u .ID , repo .ID ); errDelete != nil {
100
- log .Error ("Rollback deleteRepository: %v" , errDelete )
101
- }
107
+ rollbackRepo = repo
108
+ rollbackRepo .OwnerID = u .ID
102
109
return fmt .Errorf ("CreateRepository(git update-server-info): %v" , err )
103
110
}
104
111
return nil
105
112
}); err != nil {
113
+ if rollbackRepo != nil {
114
+ if errDelete := models .DeleteRepository (doer , rollbackRepo .OwnerID , rollbackRepo .ID ); errDelete != nil {
115
+ log .Error ("Rollback deleteRepository: %v" , errDelete )
116
+ }
117
+ }
118
+
106
119
return nil , err
107
120
}
108
121
0 commit comments