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'];