@@ -208,6 +208,24 @@ func pruneBrokenReferences(ctx context.Context,
208208 stderrBuilder .Reset ()
209209 stdoutBuilder .Reset ()
210210
211+ // check whether the remote still exists before pruning to avoid prune creating a new remote
212+ // this is needed because prune will not fail if the remote does not exist
213+ u , err := gitrepo .GetRemoteURL (ctx , storageRepo , m .GetRemoteName ())
214+ if err != nil {
215+ return err
216+ }
217+ if u == nil {
218+ return fmt .Errorf ("remote %s does not exist for %srepository %s" , m .GetRemoteName (), wiki , storageRepo .RelativePath ())
219+ }
220+
221+ fetchConfig , err := gitrepo .GetGitConfig (ctx , storageRepo , "remote.origin.fetch" )
222+ if err != nil {
223+ return err
224+ }
225+ if fetchConfig == "" {
226+ return fmt .Errorf ("remote %s has no fetch config for %srepository %s" , m .GetRemoteName (), wiki , storageRepo .RelativePath ())
227+ }
228+
211229 pruneErr := gitrepo .PruneRemote (ctx , storageRepo , m .GetRemoteName (), timeout , stdoutBuilder , stderrBuilder )
212230 if pruneErr != nil {
213231 stdout := stdoutBuilder .String ()
@@ -263,7 +281,7 @@ func runSync(ctx context.Context, m *repo_model.Mirror) ([]*mirrorSyncResult, bo
263281
264282 remoteURL , remoteErr := gitrepo .GetRemoteURL (ctx , m .Repo , m .GetRemoteName ())
265283 if remoteErr != nil {
266- log .Error ("SyncMirrors [repo: %-v]: GetRemoteAddress Error %v" , m .Repo , remoteErr )
284+ log .Error ("SyncMirrors [repo: %-v]: GetRemoteURL Error %v" , m .Repo , remoteErr )
267285 return nil , false
268286 }
269287
@@ -365,6 +383,28 @@ func runSync(ctx context.Context, m *repo_model.Mirror) ([]*mirrorSyncResult, bo
365383 stderrBuilder .Reset ()
366384 stdoutBuilder .Reset ()
367385
386+ // check whether the remote still exists before pruning to avoid prune creating a new remote
387+ // this is needed because prune will not fail if the remote does not exist
388+ u , err := gitrepo .GetRemoteURL (ctx , m .Repo .WikiStorageRepo (), m .GetRemoteName ())
389+ if err != nil {
390+ log .Error ("SyncMirrors [repo: %-v Wiki]: GetRemoteURL Error %v" , m .Repo , err )
391+ return nil , false
392+ }
393+ if u == nil {
394+ log .Error ("remote %s does not exist for repository %s" , m .GetRemoteName (), m .Repo .WikiStorageRepo ().RelativePath ())
395+ return nil , false
396+ }
397+
398+ fetchConfig , err := gitrepo .GetGitConfig (ctx , m .Repo .WikiStorageRepo (), "remote.origin.fetch" )
399+ if err != nil {
400+ log .Error ("SyncMirrors [repo: %-v Wiki]: GetGitConfig Error %v" , m .Repo , err )
401+ return nil , false
402+ }
403+ if fetchConfig == "" {
404+ log .Error ("remote %s has no fetch config for repository %s" , m .GetRemoteName (), m .Repo .WikiStorageRepo ().RelativePath ())
405+ return nil , false
406+ }
407+
368408 if err := gitrepo .UpdateRemotePrune (ctx , m .Repo .WikiStorageRepo (), m .GetRemoteName (),
369409 timeout , & stdoutBuilder , & stderrBuilder ); err != nil {
370410 stdout := stdoutBuilder .String ()
@@ -386,6 +426,28 @@ func runSync(ctx context.Context, m *repo_model.Mirror) ([]*mirrorSyncResult, bo
386426 stderrBuilder .Reset ()
387427 stdoutBuilder .Reset ()
388428
429+ // check whether the remote still exists before pruning to avoid prune creating a new remote
430+ // this is needed because prune will not fail if the remote does not exist
431+ u , err := gitrepo .GetRemoteURL (ctx , m .Repo .WikiStorageRepo (), m .GetRemoteName ())
432+ if err != nil {
433+ log .Error ("SyncMirrors [repo: %-v Wiki]: GetRemoteURL Error %v" , m .Repo , err )
434+ return nil , false
435+ }
436+ if u == nil {
437+ log .Error ("remote %s does not exist for repository %s" , m .GetRemoteName (), m .Repo .WikiStorageRepo ().RelativePath ())
438+ return nil , false
439+ }
440+
441+ fetchConfig , err := gitrepo .GetGitConfig (ctx , m .Repo .WikiStorageRepo (), "remote.origin.fetch" )
442+ if err != nil {
443+ log .Error ("SyncMirrors [repo: %-v Wiki]: GetGitConfig Error %v" , m .Repo , err )
444+ return nil , false
445+ }
446+ if fetchConfig == "" {
447+ log .Error ("remote %s has no fetch config for repository %s" , m .GetRemoteName (), m .Repo .WikiStorageRepo ().RelativePath ())
448+ return nil , false
449+ }
450+
389451 if err = gitrepo .UpdateRemotePrune (ctx , m .Repo .WikiStorageRepo (), m .GetRemoteName (),
390452 timeout , & stdoutBuilder , & stderrBuilder ); err != nil {
391453 stdout := stdoutBuilder .String ()
0 commit comments