Merge branch 'maint'
authorJonathan Nieder <jrnieder@gmail.com>
Wed, 25 Sep 2013 06:19:00 +0000 (23:19 -0700)
committerJonathan Nieder <jrnieder@gmail.com>
Wed, 25 Sep 2013 06:19:00 +0000 (23:19 -0700)
* maint:
git-remote-mediawiki: bugfix for pages w/ >500 revisions

1  2 
contrib/mw-to-git/git-remote-mediawiki.perl
index c9a4805ec1f0d5767af7a5f27428db5a02fa94a1,85d0c422961f990aa70a6cc5ed70ab319b5ca99a..476e0a2bc02d0708e01c63f6e0fc524a840d4c77
@@@ -590,9 -590,6 +590,9 @@@ sub mw_capabilities 
        print {*STDOUT} "import\n";
        print {*STDOUT} "list\n";
        print {*STDOUT} "push\n";
 +      if ($dumb_push) {
 +              print {*STDOUT} "no-private-update\n";
 +      }
        print {*STDOUT} "\n";
        return;
  }
@@@ -625,6 -622,9 +625,9 @@@ sub fetch_mw_revisions_for_page 
                rvstartid => $fetch_from,
                rvlimit => 500,
                pageids => $id,
+               # Let MediaWiki know that we support the latest API.
+               continue => '',
        };
  
        my $revnum = 0;
                        push(@page_revs, $page_rev_ids);
                        $revnum++;
                }
-               last if (!$result->{'query-continue'});
-               $query->{rvstartid} = $result->{'query-continue'}->{revisions}->{rvstartid};
+               if ($result->{'query-continue'}) { # For legacy APIs
+                       $query->{rvstartid} = $result->{'query-continue'}->{revisions}->{rvstartid};
+               } elsif ($result->{continue}) { # For newer APIs
+                       $query->{rvstartid} = $result->{continue}->{rvcontinue};
+                       $query->{continue} = $result->{continue}->{continue};
+               } else {
+                       last;
+               }
        }
        if ($shallow_import && @page_revs) {
                print {*STDERR} "  Found 1 revision (shallow import).\n";
@@@ -1214,6 -1221,7 +1224,6 @@@ sub mw_push_revision 
                }
                if (!$dumb_push) {
                        run_git(qq(notes --ref=${remotename}/mediawiki add -f -m "mediawiki_revision: ${mw_revision}" ${sha1_commit}));
 -                      run_git(qq(update-ref -m "Git-MediaWiki push" refs/mediawiki/${remotename}/master ${sha1_commit} ${sha1_child}));
                }
        }