Apakah ada cara untuk menunjukkan "siapa yang berkontribusi pada baris ini" dari setiap baris halaman Wikipedia atau situs MediaWiki?
Itu akan ditampilkan per halaman dan akan mirip dengan alat menyalahkan subversi.
Apakah ada cara untuk menunjukkan "siapa yang berkontribusi pada baris ini" dari setiap baris halaman Wikipedia atau situs MediaWiki?
Itu akan ditampilkan per halaman dan akan mirip dengan alat menyalahkan subversi.
Jawaban:
Saya sering membutuhkan sesuatu seperti ini juga, tetapi sepertinya tidak ada solusi yang siap.
Apa yang saya lakukan adalah menulis skrip yang membantu saya mengambil revisi menggunakan MediaWiki API dan mengimpornya ke sistem kontrol versi Bazaar. bzr qblame article.wiki
, lalu memberikan tampilan yang bagus tentang siapa yang mengubah apa. Script tidak benar-benar siap untuk dirilis, tetapi Anda dapat menemukannya di bawah atau di Pastebin . Script menambah repo lincah, yang kemudian dapat dikonversi ke Bazaar.
# 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 tampaknya mendukung hal ini. Sayangnya, ini hanya modul perl, bukan perintah yang ramah pengguna, jadi ini akan menjadi sedikit lebih sulit untuk digunakan daripada yang mungkin ingin ...
Terinspirasi oleh jawaban sebelumnya, saya telah mengadaptasi skrip Python pastebin sebelumnya untuk menggunakan git alih-alih lincah sebagai backend
Proyek saya di- host di GitLab
Solusi lain yang tidak terlalu ramah pengguna adalah ekstensi mw-to-git untuk git, yang mungkin memungkinkan Anda untuk berjalan git blame
di halaman.