


migrated from superuser.com Jun 4 '11 at 6:14


  • Yeah that's about right. – rogerdpack Nov 26 '12 at 18:01
  • 1


What I've done is written a script that helps me grab revisions using the MediaWiki API and import them to the Bazaar version control system. bzr qblame article.wiki, then gives a nice view of who changed what. The script is not really ready for release, but you can find it below or on Pastebin. The script adds to a mercurial repo, which can then be converted to Bazaar.

# I hereby place this script into the Public Domain!
import os, sys
import time

import mwclient

import mercurial.ui
from mercurial import localrepo
from mercurial import commands

article = 'Love'
#start_time = None
start_time = '2011-01-01T00:00:00Z'

# set up mercurial repo
ui = mercurial.ui.ui()
repo_dir = article
repo = localrepo.localrepository(ui, path=repo_dir, create = not os.path.isdir(repo_dir))
#if not os.path.isdir(article):
#   os.mkdir(article)
print "rep in", repo.root
content_path = os.path.join(repo.root, article + '.wiki')

site = mwclient.Site('en.wikipedia.org')
page = site.Pages[article]

for rev in page.revisions(start=start_time, limit=50,dir='newer', prop='ids|timestamp|flags|comment|user|content'):
    content = rev['*']
    timestamp = time.asctime(rev['timestamp'])
    comment = rev['comment'].encode('utf8')
    if len(comment) == 0: comment = "blank"
    print "writing revision from", timestamp

    f = open(content_path, 'wb')

    commands.addremove(ui, repo)
    commands.commit(ui, repo, message=comment, user=rev['user'].encode('utf8'), date=timestamp)



Inspired by previous answers, I've adapted the previous pastebin Python script to use git instead of mercurial as backend

My project is hosted on GitLab



Your Answer

