git-remote-mediawiki: properly deal with invalid remote revisions
Some wiki, including https://git.wiki.kernel.org/ have invalid revision numbers (i.e. the actual revision numbers are non-contiguous). Don't die when encountering one. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Matthieu Moy committed
Jul 16, 2012 at 21:46 UTC
ebd5fe1c15b8e576042017d6b07b7e0ed96eaf66
1 file changed
+9
-4
contrib/mw-to-git/git-remote-mediawiki
+9
-4
@@ -910,6 +910,10 @@ sub mw_import_revids {
910
my $last_timestamp = 0; # Placeholer in case $rev->timestamp is undefined
911
912
foreach my $pagerevid (@$revision_ids) {
913
+ # Count page even if we skip it, since we display
914
+ # $n/$total and $total includes skipped pages.
915
+ $n++;
916
+
917
# fetch the content of the pages
918
my $query = {
919
action => 'query',
@@ -924,6 +928,11 @@ sub mw_import_revids {
928
die "Failed to retrieve modified page for revision $pagerevid";
929
}
930
931
+ if (defined($result->{query}->{badrevids}->{$pagerevid})) {
932
+ # The revision id does not exist on the remote wiki.
933
+ next;
934
+ }
935
+
936
if (!defined($result->{query}->{pages})) {
937
die "Invalid revision $pagerevid.";
938
}
@@ -932,10 +941,6 @@ sub mw_import_revids {
941
my $result_page = $result_pages[0];
942
my $rev = $result_pages[0]->{revisions}->[0];
943
935
- # Count page even if we skip it, since we display
936
- # $n/$total and $total includes skipped pages.
937
- $n++;
938
-
944
my $page_title = $result_page->{title};
945
946
if (!exists($pages->{$page_title})) {