@@ -99,38 +99,8 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
99
99
}
100
100
101
101
// Copy uploaded files into repository.
102
- for i , uploadInfo := range infos {
103
- file , err := os .Open (uploadInfo .upload .LocalPath ())
104
- if err != nil {
105
- return err
106
- }
107
- defer file .Close ()
108
-
109
- var objectHash string
110
- if setting .LFS .StartServer && filename2attribute2info [uploadInfo .upload .Name ] != nil && filename2attribute2info [uploadInfo .upload .Name ]["filter" ] == "lfs" {
111
- // Handle LFS
112
- // FIXME: Inefficient! this should probably happen in models.Upload
113
- oid , err := models .GenerateLFSOid (file )
114
- if err != nil {
115
- return err
116
- }
117
- fileInfo , err := file .Stat ()
118
- if err != nil {
119
- return err
120
- }
121
-
122
- uploadInfo .lfsMetaObject = & models.LFSMetaObject {Oid : oid , Size : fileInfo .Size (), RepositoryID : t .repo .ID }
123
-
124
- if objectHash , err = t .HashObject (strings .NewReader (uploadInfo .lfsMetaObject .Pointer ())); err != nil {
125
- return err
126
- }
127
- infos [i ] = uploadInfo
128
- } else if objectHash , err = t .HashObject (file ); err != nil {
129
- return err
130
- }
131
-
132
- // Add the object to the index
133
- if err := t .AddObjectToIndex ("100644" , objectHash , path .Join (opts .TreePath , uploadInfo .upload .Name )); err != nil {
102
+ for i := range infos {
103
+ if err := copyUploadedLFSFileIntoRepository (& infos [i ], filename2attribute2info , t , opts .TreePath ); err != nil {
134
104
return err
135
105
}
136
106
}
@@ -152,11 +122,11 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
152
122
}
153
123
154
124
// Now deal with LFS objects
155
- for _ , uploadInfo := range infos {
156
- if uploadInfo .lfsMetaObject == nil {
125
+ for i := range infos {
126
+ if infos [ i ] .lfsMetaObject == nil {
157
127
continue
158
128
}
159
- uploadInfo .lfsMetaObject , err = models .NewLFSMetaObject (uploadInfo .lfsMetaObject )
129
+ infos [ i ] .lfsMetaObject , err = models .NewLFSMetaObject (infos [ i ] .lfsMetaObject )
160
130
if err != nil {
161
131
// OK Now we need to cleanup
162
132
return cleanUpAfterFailure (& infos , t , err )
@@ -182,6 +152,39 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
182
152
return models .DeleteUploads (uploads ... )
183
153
}
184
154
155
+ func copyUploadedLFSFileIntoRepository (info * uploadInfo , filename2attribute2info map [string ]map [string ]string , t * TemporaryUploadRepository , treePath string ) error {
156
+ file , err := os .Open (info .upload .LocalPath ())
157
+ if err != nil {
158
+ return err
159
+ }
160
+ defer file .Close ()
161
+
162
+ var objectHash string
163
+ if setting .LFS .StartServer && filename2attribute2info [info .upload .Name ] != nil && filename2attribute2info [info .upload .Name ]["filter" ] == "lfs" {
164
+ // Handle LFS
165
+ // FIXME: Inefficient! this should probably happen in models.Upload
166
+ oid , err := models .GenerateLFSOid (file )
167
+ if err != nil {
168
+ return err
169
+ }
170
+ fileInfo , err := file .Stat ()
171
+ if err != nil {
172
+ return err
173
+ }
174
+
175
+ info .lfsMetaObject = & models.LFSMetaObject {Oid : oid , Size : fileInfo .Size (), RepositoryID : t .repo .ID }
176
+
177
+ if objectHash , err = t .HashObject (strings .NewReader (info .lfsMetaObject .Pointer ())); err != nil {
178
+ return err
179
+ }
180
+ } else if objectHash , err = t .HashObject (file ); err != nil {
181
+ return err
182
+ }
183
+
184
+ // Add the object to the index
185
+ return t .AddObjectToIndex ("100644" , objectHash , path .Join (treePath , info .upload .Name ))
186
+ }
187
+
185
188
func uploadToLFSContentStore (info uploadInfo , contentStore * lfs.ContentStore ) error {
186
189
if info .lfsMetaObject == nil {
187
190
return nil
0 commit comments