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 blame
auf einer Seite ausgeführt werden können.