Skip to content

Instantly share code, notes, and snippets.

@fyrk
Forked from henare/mw-to-gollum.rb
Last active Jun 26, 2016
Embed
What would you like to do?
Convert a wiki from MediaWiki to Gollum.

Note that while this will convert a wiki from MediaWiki to Gollum, and links will be preserved, content formatting for the most part will be broken until you set the proper content type for Gollum.

  1. Install dependancies:

    gem install hpricot
    gem install gollum
    gem install gollum-lib
    gem install wikicloth
  2. Perform a Special:Export

  3. Place the XML in a Gollum repo directory, along with the .rb

  4. Edit the .rb for your particular needs (.xml path, commit credentials)

  5. Run the .rb

    ruby mw-to-gollum.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'hpricot'
require 'gollum'
require 'gollum-lib'
wiki = Gollum::Wiki.new(".")
file = File.open("G.R.A.C.E.-20130904175032.xml", "r")
doc = Hpricot(file)
doc.search('/mediawiki/page').each do |el|
title = el.at('title').inner_text
content = el.at('text').inner_text
commit = { :message => "Import MediaWiki page #{title} into Gollum",
:name => 'Tim Honeywell',
:email => 'tfhoneywell@gmail.com' }
begin
puts "Writing page #{title}"
wiki.write_page(title, :mediawiki, content, commit)
rescue Gollum::DuplicatePageError => e
p "Duplicate #{title}"
end
end
file.close
@davidar

This comment has been minimized.

Copy link

@davidar davidar commented Dec 2, 2015

For anyone else getting encoding errors: gollum/gollum#843

@MattiSG

This comment has been minimized.

Copy link

@MattiSG MattiSG commented Apr 14, 2016

If you get encoding errors: the problem is indeed the one listed by @davidar (tl;dr: creating a file with accented characters is a problem with Git), but the solution is hard to put in place, and didn't work in my case.

I simply used Ruby's native i18n to remove diacritics. This UTF-supporting (with updated install instructions) version can convert international MediaWiki to Gollum / GitHub wiki pages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment