Czy istnieje sposób pokazania „kto przyczynił się do tego wiersza” każdej linii strony Wikipedii lub strony MediaWiki?
Wyświetli się na stronie i będzie podobny do narzędzia do obwiniania subversion.
Czy istnieje sposób pokazania „kto przyczynił się do tego wiersza” każdej linii strony Wikipedii lub strony MediaWiki?
Wyświetli się na stronie i będzie podobny do narzędzia do obwiniania subversion.
Często też czegoś takiego potrzebuję, ale wygląda na to, że nie ma gotowego rozwiązania.
To, co zrobiłem, to napisanie skryptu, który pomaga mi pobierać wersje za pomocą API MediaWiki i importować je do systemu kontroli wersji Bazaar. bzr qblame article.wiki
, a następnie daje ładny widok, kto co zmienił. Skrypt nie jest tak naprawdę gotowy do wydania, ale można go znaleźć poniżej lub na Pastebin . Skrypt dodaje się do repozytorium rtęciowego, które można następnie przekształcić w 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 wydaje się wspierać dokładnie to. Niestety jest to tylko moduł perla, a nie przyjazne dla użytkownika polecenie, więc korzystanie z niego będzie nieco trudniejsze, niż można by się spodziewać…
Zainspirowany poprzednimi odpowiedziami dostosowałem poprzedni skrypt Pytebona pastebin do używania git zamiast mercurial jako backendu
Mój projekt jest hostowany na GitLab