Existe-t-il un moyen de montrer "qui a contribué à cette ligne" de chaque ligne d'une page de Wikipédia ou d'un site MediaWiki?
Il s'afficherait par page et serait similaire à l'outil de blâme de subversion.
Existe-t-il un moyen de montrer "qui a contribué à cette ligne" de chaque ligne d'une page de Wikipédia ou d'un site MediaWiki?
Il s'afficherait par page et serait similaire à l'outil de blâme de subversion.
Réponses:
J'ai souvent besoin de quelque chose comme ça aussi, mais il semble qu'il n'y ait pas de solution prête.
J'ai écrit un script qui m'aide à saisir des révisions à l'aide de l'API MediaWiki et à les importer dans le système de contrôle de version de Bazaar. bzr qblame article.wiki
, donne ensuite une belle vue de qui a changé quoi. Le script n'est pas vraiment prêt pour la sortie, mais vous pouvez le trouver ci-dessous ou sur Pastebin . Le script s'ajoute à un dépôt mercuriel, qui peut ensuite être converti en Bazar.
# 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)
#os.chdir(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')
f.write(content.encode('utf8'))
f.close()
commands.addremove(ui, repo)
commands.commit(ui, repo, message=comment, user=rev['user'].encode('utf8'), date=timestamp)
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm semble supporter exactement cela. Malheureusement, c'est juste un module perl, pas une commande conviviale, donc ça va être un peu plus difficile à utiliser qu'on ne le voudrait…
Inspiré des réponses précédentes, j'ai adapté le script Python pastebin précédent pour utiliser git au lieu de mercurial comme backend
Mon projet est hébergé sur GitLab
Une autre solution peu conviviale serait l' extension mw-to-git pour git, qui vous permettrait probablement d'exécuter git blame
sur une page.