Browse Source

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>
maint
Matthieu Moy 13 years ago committed by Junio C Hamano
parent
commit
ebd5fe1c15
  1. 13
      contrib/mw-to-git/git-remote-mediawiki

13
contrib/mw-to-git/git-remote-mediawiki

@ -910,6 +910,10 @@ sub mw_import_revids { @@ -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 { @@ -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 { @@ -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})) {

Loading…
Cancel
Save