Matthieu Moy <Matthieu.Moy@xxxxxxx> writes: > 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 <Matthieu.Moy@xxxxxxx> > --- > 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; > +} Is this sufficient? My reading of the big comment at the beginning of fast-import.c is that you would also want to quote each backslash; otherwise a character (or an octal) after it will be taken as a C-style quoted special letter, no? > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html