Visualizzazione riga per riga dell'autore responsabile del contributo sulla pagina MediaWiki


11

C'è un modo per mostrare "chi ha contribuito a questa linea" di ogni riga di una pagina di Wikipedia o di un sito MediaWiki?

Mostrerebbe per pagina e sarebbe simile allo strumento di colpa della sovversione.


Vuoi trovare la prima occorrenza di una parola o frase specifica nella cronologia delle revisioni di una pagina o questa domanda riguarda qualcos'altro? Ci deve essere un modo per scaricare la cronologia completa delle revisioni per una pagina specifica, ma non l'ho ancora trovata.
Anderson Green,

Sì, è giusto.
rogerdpack,

1
È molto facile farlo usando WikiBlame, come spiegato qui: webapps.stackexchange.com/a/35914/20087
Anderson Green,

Wow, è molto vicino. Sembra che uno si inserisca per trovare il committer di "parole date" nella pagina wiki, forse potrebbe essere modificato per mostrare l'intera pagina :)
rogerdpack,

Mostra già la revisione in cui è stato aggiunto il testo, quindi puoi semplicemente fare clic su quel link per vedere come appariva l'intera pagina quando è stato aggiunto il testo.
Anderson Green,

Risposte:


3

Spesso ho bisogno anche di qualcosa del genere, ma sembra che non ci sia una soluzione pronta.

Quello che ho fatto è stato scritto uno script che mi aiuta a prendere le revisioni usando l'API MediaWiki e importarle nel sistema di controllo della versione di Bazaar. bzr qblame article.wiki, quindi offre una buona visione di chi ha cambiato cosa. Lo script non è davvero pronto per il rilascio, ma puoi trovarlo qui sotto o su Pastebin . La sceneggiatura si aggiunge a un repository mercuriale, che può quindi essere convertito in 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)



0

Un'altra soluzione non molto user friendly sarebbe l' estensione mw-to-git per git, che presumibilmente ti permetterebbe di essere eseguito git blamesu una pagina.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.