it-swarm.com.de

MediaWiki VCS-Backend? (Am liebsten DVCS wie Git oder Mercurial)

Als langjähriger MediaWiki-Benutzer würde ich gerne ein neues Wiki-Projekt starten, da ich die MediaWiki-Reife und die sehr flexiblen und leistungsstarken Funktionen sehr schätze. Ich habe jedoch Zweifel, dass ich die gesamte MediaWiki-Infrastruktur für das neue Projekt mit einbeziehen möchte.

Nehmen wir an, ich hätte wirklich gerne ein VCS-Backend, um alle Wiki-Änderungen an einem Ort zu haben. Soweit ich weiß, unterstützt MediaWiki nur RBDMS-Backends. Ich bin kürzlich auf eine alte Frage gestoßen, die vor ungefähr vier Jahren gestellt wurde. Nachdem ich eine Weile mit Gitit und Ikiwiki gespielt habe, bin ich der Meinung, dass Gitit die bessere Wahl ist, um eine Integration mit GIt oder Mercurial zu ermöglichen, und es ist kein statischer Compiler im Gegensatz zu Ikiwiki. Gitit scheint eine viel leichtere Lösung zu sein als MediaWiki, aber ich befürchte, es ist nicht einmal 10% leistungsfähiger als MediaWiki: Ich konnte Revisionen nicht über das Webinterface vergleichen und bin mir nicht sicher, ob ich Kategorien oder Vorlagen verwenden kann, die von entscheidender Bedeutung sind für mich nur ein paar plugins. Aber ich liebe die Idee eines VCS-Backends wirklich, weil ich es lokal mit dem Backend synchronisieren, einfach exportieren und alle Git- oder Mercurial-Funktionen verwenden kann.

Ich erinnere mich, dass es ein Git-Remote-Hilfsprogramm für MediaWiki gibt, das eine brückenartige Lösung zwischen der MediaWiki-API über HTTP und Git ist. Ich habe es auch getestet und hatte das starke Gefühl, dass diese Git-Erweiterung sehr rau ist und sehr langsam zu funktionieren scheint, was in einigen Fällen sogar einen Neustart des Git-Klonens zur Folge hat (wahrscheinlich aufgrund der tatsächlichen Wiki-Leistung, nicht sicher) und möglicherweise verursacht andere Probleme. Ich hatte es leider nie geschafft, einen vollständigen Verlaufsdump zu bekommen.

Gibt es eine Möglichkeit, Git oder Mercurial als echtes MediaWiki-Backend zu verwenden?

BEARBEITEN:

Ich suche anscheinend nach einer einfachen Lösung für die vollständige Datenreplikation im Wiki (Artikel, Diskussionsseiten, Vorlagen, Dateien; optional: wahrscheinlich Benutzerdatenbank (vorausgesetzt, das VCS speichert die Benutzerdaten selbst oder etwas wie Mercurial ACL, was auch immer) und andere Kleinigkeiten, die per se nicht eng mit dem Wiki-Inhalt zusammenhängen, sowie eine einfach zu migrierende Infrastruktur.

6

Ich denke, es gibt keine (mit Standard-Software) aus den folgenden Gründen.

SQL und Git sind sehr unterschiedliche Speichersysteme.

In Sql geht es darum, viele tief miteinander verbundene Daten in einem einzigen großen Datenblock zu speichern. Dies ermöglicht eine effiziente Indizierung und Suche.

Bei Git geht es darum, Programmiertext in vielen kleinen Dateien mit der ungeschriebenen Annahme zu speichern, dass der Inhalt dieser Dateien so unabhängig wie möglich ist. Dies erleichtert das Zusammenführen, da Änderungen an einer Datei im Allgemeinen keine Auswirkungen auf andere Dateien haben sollten (zumindest in einer idealen Welt).

Das Design von MediaWiki ist eng in die Verwendung eines RDBMS als Speicher und insbesondere von MySQL integriert. Sie hätten eine beliebige Anzahl anderer Speichersysteme auswählen können, aber diese und diese Auswahl wirken sich wahrscheinlich auf viele Teile des Systems aus. Wie in ihrem Wiki erwähnt, gab es bis vor ungefähr 2 Jahren ein Projekt zur Entwicklung eines Git-Backend-Features, das jedoch offenbar aufgegeben wurde.

Wenn die Entwickler dies nicht unterstützen, können Sie für MediaWiki nur etwas verwenden, das wie ein SQL-Server aussieht, aber tatsächlich eine Reihe loser "Text" -Dateien enthält, die von einem (D) VCS wie git verwaltet werden können.

ODBC-Konnektoren unterstützen Auflistungen von Flatfiles auf den meisten, wenn nicht allen Plattformen. Ihre Funktionen sind jedoch möglicherweise nicht vollständig genug, um als SQL-Server zu fungieren. Das Problem ist, dass MediaWiki von keinem Drittanbieter erwartet, dass er seine Datentabellen in irgendeiner Weise ändert. Das Akzeptieren eines Patches für diese Dateien von einem Drittanbieter muss daher so erfolgen, dass die interne Konsistenz der Datenbank nicht beeinträchtigt wird.

Dies ist für einige, insbesondere für einfache Anwendungen, sicherlich möglich, ist jedoch stark anwendungsabhängig und MediaWiki ist ziemlich komplex.

Sie können die spezifischen Vorteile der Verwendung eines der verfügbaren Wikis im "Build for Git" -Stil gegenüber den Funktionen abwägen Sie haben nicht mit MediaWiki verglichen.

2
John McNamara

MediaWiki hat eine Speicherabstraktionsschicht , die dies technisch möglich macht (die verlinkte Seite spricht von der Verwendung externer Datenbanken, ist jedoch nicht darauf beschränkt; siehe Dokumentation der ExternalStore -Klasse für Einzelheiten). Sie müssten Ihre eigene ExternalStoreMedium Unterklasse schreiben. Das Wiki hätte natürlich immer noch ein RDBMS-Backend, aber der Seitentext würde stattdessen in git gespeichert.

In der Praxis bezweifle ich stark, dass dies die Dinge für Sie einfacher machen würde.

2
Tgr