@@ -128,7 +128,7 @@ func MigrateRepository(ctx context.Context, doer *user_model.User, ownerName str
128
128
uploader := NewGiteaLocalUploader (ctx , doer , ownerName , opts .RepoName )
129
129
uploader .gitServiceType = opts .GitServiceType
130
130
131
- if err := migrateRepository (downloader , uploader , opts , messenger ); err != nil {
131
+ if err := migrateRepository (doer , downloader , uploader , opts , messenger ); err != nil {
132
132
if err1 := uploader .Rollback (); err1 != nil {
133
133
log .Error ("rollback failed: %v" , err1 )
134
134
}
@@ -177,7 +177,7 @@ func newDownloader(ctx context.Context, ownerName string, opts base.MigrateOptio
177
177
// migrateRepository will download information and then upload it to Uploader, this is a simple
178
178
// process for small repository. For a big repository, save all the data to disk
179
179
// before upload is better
180
- func migrateRepository (downloader base.Downloader , uploader base.Uploader , opts base.MigrateOptions , messenger base.Messenger ) error {
180
+ func migrateRepository (doer * user_model. User , downloader base.Downloader , uploader base.Uploader , opts base.MigrateOptions , messenger base.Messenger ) error {
181
181
if messenger == nil {
182
182
messenger = base .NilMessenger
183
183
}
@@ -198,6 +198,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
198
198
return err
199
199
}
200
200
201
+ // If the downloader is not a RepositoryRestorer then we need to recheck the CloneURL
202
+ if _ , ok := downloader .(* RepositoryRestorer ); ! ok {
203
+ // Now the clone URL can be rewritten by the downloader so we must recheck
204
+ if err := IsMigrateURLAllowed (repo .CloneURL , doer ); err != nil {
205
+ return err
206
+ }
207
+
208
+ // And so can the original URL too so again we must recheck
209
+ if repo .OriginalURL != "" {
210
+ if err := IsMigrateURLAllowed (repo .OriginalURL , doer ); err != nil {
211
+ return err
212
+ }
213
+ }
214
+ }
215
+
201
216
log .Trace ("migrating git data from %s" , repo .CloneURL )
202
217
messenger ("repo.migrate.migrating_git" )
203
218
if err = uploader .CreateRepo (repo , opts ); err != nil {
0 commit comments