Có cách nào để hiển thị "ai đã đóng góp cho dòng này" của từng dòng trên một trang Wikipedia hoặc của một trang MediaWiki không?
Nó sẽ hiển thị trên mỗi trang và sẽ tương tự như công cụ đổ lỗi lật đổ.
Có cách nào để hiển thị "ai đã đóng góp cho dòng này" của từng dòng trên một trang Wikipedia hoặc của một trang MediaWiki không?
Nó sẽ hiển thị trên mỗi trang và sẽ tương tự như công cụ đổ lỗi lật đổ.
Câu trả lời:
Tôi cũng thường cần một cái gì đó như thế này, nhưng có vẻ như không có giải pháp sẵn sàng.
Những gì tôi đã làm là viết một tập lệnh giúp tôi lấy các bản sửa đổi bằng API MediaWiki và nhập chúng vào hệ thống kiểm soát phiên bản Bazaar. bzr qblame article.wiki
, sau đó đưa ra một cái nhìn tốt đẹp về những người đã thay đổi những gì. Kịch bản chưa thực sự sẵn sàng để phát hành, nhưng bạn có thể tìm thấy nó bên dưới hoặc trên Pastebin . Kịch bản thêm vào một repo đồng bóng, sau đó có thể được chuyển đổi thành 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 xuất hiện để hỗ trợ chính xác điều này. Thật không may, nó chỉ là một mô-đun perl, không phải là một lệnh thân thiện với người dùng, vì vậy nó sẽ khó sử dụng hơn một chút so với người ta có thể muốn
Lấy cảm hứng từ các câu trả lời trước đó, tôi đã điều chỉnh tập lệnh Python pastebin trước đó để sử dụng git thay vì đồng bóng như phụ trợ
Dự án của tôi được lưu trữ trên GitLab
Một giải pháp không thân thiện với người dùng khác sẽ là tiện ích mở rộng mw-git cho git, có lẽ sẽ cho phép bạn chạy git blame
trên một trang.