diff --git a/Source/pages/repo_import_full.php b/Source/pages/repo_import_full.php index 1d81a1c..7d18f19 100644 --- a/Source/pages/repo_import_full.php +++ b/Source/pages/repo_import_full.php @@ -24,16 +24,44 @@ html_page_top1(); html_page_top2(); +# create a new, temporary repo $t_new_repo = SourceRepo::load( $f_repo_id ); $t_new_repo->id = 0; $t_new_repo->name = 'Import ' . date( 'Y-m-d H:i:s' ); $t_new_repo->save(); -$t_changesets = event_signal( 'EVENT_SOURCE_IMPORT_FULL', array( $t_new_repo ) ); +# keep checking for more changesets to import +$t_error = false; +while( true ) { -if ( is_array( $t_changesets ) ) { + # import the next batch of changesets + $t_changesets = event_signal( 'EVENT_SOURCE_IMPORT_FULL', array( $t_new_repo ) ); + + # check for errors + if ( !is_array( $t_changesets ) ) { + $t_error = true; + break; + } + + # if no more entries, we're done + if ( count( $t_changesets ) < 1 ) { + break; + } + Source_Process_Changesets( $t_changesets ); +} +# if we errored, delete the new repo and stop +if ( $t_error ) { + SourceRepo::delete( $t_new_repo->id ); + + echo '
'; + echo plugin_lang_get( 'import_full_failed' ), '
'; + print_bracket_link( plugin_page( 'repo_manage_page' ) . '&id=' . $t_repo->id, 'Return To Repository' ); + echo '
'; + +# otherwise, rename and save the new repo, then delete the old +} else { $t_new_repo->name = $t_repo->name; $t_new_repo->save(); @@ -45,14 +73,6 @@ echo sprintf( plugin_lang_get( 'import_stats' ), $t_stats['changesets'], $t_stats['files'], $t_stats['bugs'] ), '
'; print_bracket_link( plugin_page( 'repo_manage_page' ) . '&id=' . $t_new_repo->id, 'Return To Repository' ); echo ''; - -} else { - SourceRepo::delete( $t_new_repo->id ); - - echo '
'; - echo plugin_lang_get( 'import_full_failed' ), '
'; - print_bracket_link( plugin_page( 'repo_manage_page' ) . '&id=' . $t_repo->id, 'Return To Repository' ); - echo '
'; } form_security_purge( 'plugin_Source_repo_import_full' ); diff --git a/Source/pages/repo_import_latest.php b/Source/pages/repo_import_latest.php index 37c4e76..e72d275 100644 --- a/Source/pages/repo_import_latest.php +++ b/Source/pages/repo_import_latest.php @@ -85,17 +85,37 @@ $t_pre_stats = $t_repo->stats(); -$t_changesets = event_signal( 'EVENT_SOURCE_IMPORT_LATEST', array( $t_repo ) ); +# keep checking for more changesets to import +$t_error = false; +while( true ) { -if ( !is_array( $t_changesets ) ) { - echo plugin_lang_get( 'import_latest_failed' ), '
'; -} else { + # import the next batch of changesets + $t_changesets = event_signal( 'EVENT_SOURCE_IMPORT_LATEST', array( $t_repo ) ); + + # check for errors + if ( !is_array( $t_changesets ) ) { + $t_error = true; + break; + } + + # if no more entries, we're done + if ( count( $t_changesets ) < 1 ) { + break; + } + Source_Process_Changesets( $t_changesets ); + # let plugins process this batch of changesets event_signal( 'EVENT_SOURCE_POSTIMPORT', array( $t_repo, $t_changesets ) ); } +# only display results when the user is initiating the import if ( !$t_remote ) { + + if ( $t_error ) { + echo '
', plugin_lang_get( 'import_latest_failed' ), '
'; + } + $t_stats = $t_repo->stats(); $t_stats['changesets'] -= $t_pre_stats['changesets']; $t_stats['files'] -= $t_pre_stats['files'];