[PATCH] git-remote-mediawiki: escape double quotes and LF in file names
From: Matthieu Moy <hidden>
Date: 2016-06-15 22:55:27
Subsystem:
the rest · Maintainer:
Linus Torvalds
A mediawiki page can contain, and even start with a " character, we have to escape it when generating the fast-export stream. While we're there, also escape newlines, but I don't think we can get them from MediaWiki pages. Signed-off-by: Matthieu Moy <redacted> --- contrib/mw-to-git/git-remote-mediawiki | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/contrib/mw-to-git/git-remote-mediawiki b/contrib/mw-to-git/git-remote-mediawiki
index 68555d4..e7a0e7b 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki@@ -711,6 +711,13 @@ sub fetch_mw_revisions { return ($n, @revisions); } +sub fe_escape_path { + my $path = shift; + $path =~ s/"/\\"/g; + $path =~ s/\n/\\n/g; + return $path; +} + sub import_file_revision { my $commit = shift; my %commit = %{$commit};
@@ -738,15 +745,17 @@ sub import_file_revision { print STDOUT "from refs/mediawiki/$remotename/master^0\n"; } if ($content ne DELETED_CONTENT) { - print STDOUT "M 644 inline $title.mw\n"; + print STDOUT "M 644 inline " . + fe_escape_path($title . ".mw") . "\n"; literal_data($content); if (%mediafile) { - print STDOUT "M 644 inline $mediafile{title}\n"; + print STDOUT "M 644 inline " + . fe_escape_path($mediafile{title}) . "\n"; literal_data_raw($mediafile{content}); } print STDOUT "\n\n"; } else { - print STDOUT "D $title.mw\n"; + print STDOUT "D " . fe_escape_path($title . ".mw") . "\n"; } # mediawiki revision number in the git note
--
1.8.0.319.g8abfee4