Signed-off-by: Matthieu Moy <matthieu....@imag.fr>
---
 contrib/mw-to-git/git-remote-mediawiki | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/contrib/mw-to-git/git-remote-mediawiki 
b/contrib/mw-to-git/git-remote-mediawiki
index a2da52f..8e46e4e 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki
@@ -66,11 +66,16 @@ chomp(@tracked_pages);
 my @tracked_categories = split(/[ \n]/, run_git("config --get-all remote.". 
$remotename .".categories"));
 chomp(@tracked_categories);
 
-# Import media files too.
+# Import media files on pull
 my $import_media = run_git("config --get --bool remote.". $remotename 
.".mediaimport");
 chomp($import_media);
 $import_media = ($import_media eq "true");
 
+# Export media files on push
+my $export_media = run_git("config --get --bool remote.". $remotename 
.".mediaexport");
+chomp($export_media);
+$export_media = !($export_media eq "false");
+
 my $wiki_login = run_git("config --get remote.". $remotename .".mwLogin");
 # Note: mwPassword is discourraged. Use the credential system instead.
 my $wiki_passwd = run_git("config --get remote.". $remotename .".mwPassword");
@@ -1068,6 +1073,11 @@ sub mw_push_file {
                $extension = "";
        }
        if ($extension eq "mw") {
+               my $ns = get_mw_namespace_id_for_page($complete_file_name);
+               if ($ns && $ns == get_mw_namespace_id("File") && 
(!$export_media)) {
+                       print STDERR "Ignoring media file related page: 
$complete_file_name\n";
+                       return ($oldrevid, "ok");
+               }
                my $file_content;
                if ($page_deleted) {
                        # Deleting a page usually requires
@@ -1107,10 +1117,12 @@ sub mw_push_file {
                }
                $newrevid = $result->{edit}->{newrevid};
                print STDERR "Pushed file: $new_sha1 - $title\n";
-       } else {
+       } elsif ($export_media) {
                $newrevid = mw_upload_file($complete_file_name, $new_sha1,
                                           $extension, $page_deleted,
                                           $summary);
+       } else {
+               print STDERR "Ignoring media file $title\n";
        }
        $newrevid = ($newrevid or $oldrevid);
        return ($newrevid, "ok");
@@ -1328,3 +1340,11 @@ sub get_mw_namespace_id {
                die "No such namespace $name on MediaWiki.";
        }
 }
+
+sub get_mw_namespace_id_for_page {
+       if (my ($namespace) = $_[0] =~ /^([^:]*):/) {
+               return get_mw_namespace_id($namespace);
+       } else {
+               return;
+       }
+}
-- 
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