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