Gibt es eine Möglichkeit, in jeder Zeile einer Wikipedia-Seite oder einer MediaWiki-Site anzuzeigen, wer zu dieser Zeile beigetragen hat?
Es würde pro Seite angezeigt und wäre dem Subversion-Schuld-Tool ähnlich.
Gibt es eine Möglichkeit, in jeder Zeile einer Wikipedia-Seite oder einer MediaWiki-Site anzuzeigen, wer zu dieser Zeile beigetragen hat?
Es würde pro Seite angezeigt und wäre dem Subversion-Schuld-Tool ähnlich.
Antworten:
Ich brauche oft auch so etwas, aber es sieht so aus, als gäbe es keine fertige Lösung.
Ich habe ein Skript geschrieben, mit dem ich Revisionen mithilfe der MediaWiki-API abrufen und in das Bazaar-Versionskontrollsystem importieren kann. bzr qblame article.wiki, gibt dann einen schönen Blick darauf, wer was geändert hat. Das Skript ist noch nicht wirklich zur Veröffentlichung bereit, aber Sie finden es unten oder auf Pastebin . Das Skript fügt ein Quecksilber-Repo hinzu, das dann in Bazaar konvertiert werden kann.
# 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 scheint genau dies zu unterstützen. Leider ist es nur ein Perl-Modul, kein benutzerfreundlicher Befehl, daher wird es etwas schwieriger zu bedienen sein, als man vielleicht möchte ...
Inspiriert von früheren Antworten habe ich das vorherige Pastebin-Python-Skript so angepasst , dass Git anstelle von Mercurial als Backend verwendet wird
Mein Projekt wird auf GitLab gehostet
Eine andere nicht sehr benutzerfreundliche Lösung wäre die Erweiterung mw-to-git für git, mit der Sie vermutlich git blameauf einer Seite ausgeführt werden können.