Mediawiki to GFM is a script to convert a set of Mediawiki pages to GitHub Flavoured Markdown (GFM). This script was written from a necessity to convert a MediaWiki installation to a GitLab wiki. This code is based on MediaWiki to Markdown by Philip Ashlock. Philip graciously gave us permission to post our version as a new project.
Major differences include the addition of PHPUnit tests, code is broken into classes, deprecated code removed, work around for a bug in Pandoc added, fix for a common MediaWiki user error added, other small changes other small changes.
git clone https://github.com/outofcontrol/mediawiki-to-gfm.git
cd mediawiki-to-gfm
composer update --no-dev
Run the script on your exported MediaWiki XML file:
./convert.php --filename=/path/to/filename.xml --output=/path/to/converted/files
./convert.php --filename=/path/to/filename.xml --output=/path/to/converted/files --format=gfm --addmeta --flatten --indexes
--filename : Location of the mediawiki exported XML file to convert
to GFM format (Required)
--output : Location where you would like to save the converted files
(Default: ./output)
--format : What format would you like to convert to. Default is GFM
(for use in GitLab and GitHub) See pandoc documentation
for more formats (Default: 'gfm')
--addmeta : This flag will add a Permalink to each file (Default: false)
--flatten : This flag will force all pages to be saved in a single level
directory. File names will be converted in the following way:
Mediawiki_folder/My_File_Name -> Mediawiki_folder_My_File_Name
and saved in a file called 'Mediawiki_folder_My_File_Name.md'
(Default: false)
--help : This help message (almost)
Create a new directory and put filename.xml
into the new directory:
mkdir my_wiki
mv filename.xml my_wiki/
cd my_wiki
Now you can convert filename.xml
using docker.
Note: do not use the output parameter. The output will always be written into the subdirectory output
of the current path. (hence the creation of a new directory). This is necessary, because the docker container does not have access to your filesystem except for the current directory (because of the -v $PWD:/app
parameter for docker)
docker run -v $PWD:/app oooc/mediawiki-to-gfm --filename=filename.xml
In order to convert from MediaWiki format to GFM and use in GitLab (or GitHub), you will first need to export all the pages you wish to convert from Mediawiki into an XML file. Here are a few simple steps to help you accomplish this quickly:
In theory you can convert to any of these formats… (not tested):
https://pandoc.org/MANUAL.html#description
Updates and improvements are welcome! Please only submit a PR if you have also written tests and tested your code! To run phpunit tests, update composer without the --no-dev parameter:
composer update
@SomethingGeneric: Fix path for Docker
@mloskot: Verify that this script does run in PHP 7.2 (#1)
@timwsuqld: First contribution!
This script has not been tested on Windows.