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....@imag.fr>
---
 contrib/mw-to-git/git-remote-mediawiki | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/contrib/mw-to-git/git-remote-mediawiki 
b/contrib/mw-to-git/git-remote-mediawiki
index cf467ac..80a07cc 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki
@@ -910,6 +910,10 @@ sub mw_import_revids {
        my $last_timestamp = 0; # Placeholer in case $rev->timestamp is 
undefined
 
        foreach my $pagerevid (@$revision_ids) {
+               # Count page even if we skip it, since we display
+               # $n/$total and $total includes skipped pages.
+               $n++;
+
                # fetch the content of the pages
                my $query = {
                        action => 'query',
@@ -924,6 +928,11 @@ sub mw_import_revids {
                        die "Failed to retrieve modified page for revision 
$pagerevid";
                }
 
+               if (defined($result->{query}->{badrevids}->{$pagerevid})) {
+                       # The revision id does not exist on the remote wiki.
+                       next;
+               }
+
                if (!defined($result->{query}->{pages})) {
                        die "Invalid revision $pagerevid.";
                }
@@ -932,10 +941,6 @@ sub mw_import_revids {
                my $result_page = $result_pages[0];
                my $rev = $result_pages[0]->{revisions}->[0];
 
-               # Count page even if we skip it, since we display
-               # $n/$total and $total includes skipped pages.
-               $n++;
-
                my $page_title = $result_page->{title};
 
                if (!exists($pages->{$page_title})) {
-- 
1.7.11.1.30.g7e1baf9.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to