@@ -64,6 +64,12 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
64
64
return err
65
65
}
66
66
67
+ // copy lfs files failure should not be ignored
68
+ if err := models .CopyLFS (ctx , repo , oldRepo ); err != nil {
69
+ rollbackRemoveFn ()
70
+ return err
71
+ }
72
+
67
73
repoPath := models .RepoPath (owner .Name , repo .Name )
68
74
if stdout , err := git .NewCommand (
69
75
"clone" , "--bare" , oldRepoPath , repoPath ).
@@ -92,6 +98,7 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
92
98
return nil , err
93
99
}
94
100
101
+ // even if below operations failed, it could be ignored. And they will be retried
95
102
ctx := models .DefaultDBContext ()
96
103
if err = repo .UpdateSize (ctx ); err != nil {
97
104
log .Error ("Failed to update size for repository: %v" , err )
@@ -100,11 +107,5 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
100
107
log .Error ("Copy language stat from oldRepo failed" )
101
108
}
102
109
103
- if err := models .CopyLFS (ctx , repo , oldRepo ); err != nil {
104
- if errDelete := models .DeleteRepository (doer , owner .ID , repo .ID ); errDelete != nil {
105
- log .Error ("Rollback deleteRepository: %v" , errDelete )
106
- }
107
- return nil , err
108
- }
109
110
return repo , nil
110
111
}
0 commit comments