git-remote-mediawiki: actually send empty comment when they're empty
[gitweb.git] / contrib / mw-to-git / git-remote-mediawiki
index ff9384e91bb76560f5d0f0a4275a014cd0171041..a2da52f4d6194db5a93d5ae3875249027b02d9e0 100755 (executable)
@@ -20,9 +20,6 @@
 # - Git renames could be turned into MediaWiki renames (see TODO
 #   below)
 #
-# - login/password support requires the user to write the password
-#   cleartext in a file (see TODO below).
-#
 # - No way to import "one page, and all pages included in it"
 #
 # - Multiple remote MediaWikis have not been very well tested.
@@ -54,6 +51,9 @@ use constant EMPTY_CONTENT => "<!-- empty page -->\n";
 # used to reflect file creation or deletion in diff.
 use constant NULL_SHA1 => "0000000000000000000000000000000000000000";
 
+# Used on Git's side to reflect empty edit messages on the wiki
+use constant EMPTY_MESSAGE => '*Empty MediaWiki Message*';
+
 my $remotename = $ARGV[0];
 my $url = $ARGV[1];
 
@@ -72,9 +72,7 @@ chomp($import_media);
 $import_media = ($import_media eq "true");
 
 my $wiki_login = run_git("config --get remote.". $remotename .".mwLogin");
-# TODO: ideally, this should be able to read from keyboard, but we're
-# inside a remote helper, so our stdin is connect to git, not to a
-# terminal.
+# Note: mwPassword is discourraged. Use the credential system instead.
 my $wiki_passwd = run_git("config --get remote.". $remotename .".mwPassword");
 my $wiki_domain = run_git("config --get remote.". $remotename .".mwDomain");
 chomp($wiki_login);
@@ -940,7 +938,7 @@ sub mw_import_revids {
 
                my %commit;
                $commit{author} = $rev->{user} || 'Anonymous';
-               $commit{comment} = $rev->{comment} || '*Empty MediaWiki Message*';
+               $commit{comment} = $rev->{comment} || EMPTY_MESSAGE;
                $commit{title} = mediawiki_smudge_filename($page_title);
                $commit{mw_revision} = $rev->{revid};
                $commit{content} = mediawiki_smudge($rev->{'*'});
@@ -1055,6 +1053,10 @@ sub mw_push_file {
        my $oldrevid = shift;
        my $newrevid;
 
+       if ($summary eq EMPTY_MESSAGE) {
+               $summary = '';
+       }
+
        my $new_sha1 = $diff_info_split[3];
        my $old_sha1 = $diff_info_split[2];
        my $page_created = ($old_sha1 eq NULL_SHA1);
@@ -1280,7 +1282,7 @@ sub get_mw_namespace_id {
                # Look at configuration file, if the record for that namespace is
                # already cached. Namespaces are stored in form:
                # "Name_of_namespace:Id_namespace", ex.: "File:6".
-               my @temp = split(/[ \n]/, run_git("config --get-all remote."
+               my @temp = split(/[\n]/, run_git("config --get-all remote."
                                                . $remotename .".namespaceCache"));
                chomp(@temp);
                foreach my $ns (@temp) {