Bir Wikipedia sayfasının veya bir MediaWiki sitesinin her satırının "bu satıra kimlerin katkıda bulunduğunu" göstermenin bir yolu var mı?
Bu sayfa başına gösterilir ve yıkım suçlama aracına benzer.
Bir Wikipedia sayfasının veya bir MediaWiki sitesinin her satırının "bu satıra kimlerin katkıda bulunduğunu" göstermenin bir yolu var mı?
Bu sayfa başına gösterilir ve yıkım suçlama aracına benzer.
Yanıtlar:
Sık sık böyle bir şeye ihtiyacım var, ama hazır bir çözüm yok gibi görünüyor.
Yaptığım şey, MediaWiki API'sını kullanarak revizyonları almamı ve bunları Bazaar sürüm kontrol sistemine aktarmamı sağlayan bir komut dosyası yazdı. bzr qblame article.wiki
, sonra kimin neyi değiştirdiğine dair güzel bir fikir verir. Komut dosyası piyasaya sürülmeye hazır değil, ancak aşağıda veya Pastebin'de bulabilirsiniz . Komut dosyası, daha sonra Pazar'a dönüştürülebilen bir merkür repo ekler.
# 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 tam olarak bunu destekliyor gibi görünüyor. Ne yazık ki, bu sadece bir perl modülü, kullanıcı dostu bir komut değil, bu yüzden kullanmak istediğinden biraz daha zor olacak ...
Önceki cevaplardan esinlenerek , önceki macun Python komut dosyasını arka uç olarak mercurial yerine git kullanacak şekilde uyarladım
Projem olan GitLab barındırılan
Kullanıcı dostu olmayan bir başka çözüm de git için mw-to-git uzantısıdır , ki bu muhtemelen git blame
bir sayfada çalışmanıza izin verir .