web-dev-qa-db-fra.com

Le backend de MediaWiki VCS? (De préférence DVCS comme Git ou Mercurial)

En tant qu'utilisateur de MediaWiki de longue date, j'aimerais commencer un nouveau projet wiki car j'apprécie beaucoup la maturité de MediaWiki et ses capacités très flexibles et puissantes. Mais je doute que je veuille intégrer toute l'infrastructure de MediaWiki au nouveau projet.

Disons que j'aimerais vraiment avoir un back-end VCS pour avoir toutes les éditions du wiki au même endroit. Pour autant que je sache, MediaWiki ne prend en charge que les moteurs RBDMS. J'ai récemment rencontré une ancienne question posée il y a environ quatre ans. Après avoir joué quelque temps avec Gitit et Ikiwiki, j'estime que Gitit est un meilleur choix permettant une intégration avec GIt ou Mercurial, et que ce n'est pas un compilateur statique contrairement à Ikiwiki. Gitit semble être une solution beaucoup plus légère que MediaWiki. Cependant, je crains que ce ne soit même pas 10% plus puissant que MediaWiki: je ne pouvais pas comparer les révisions via l'interface Web, sans savoir si je pourrais utiliser des catégories ou des modèles essentiels. pour moi, juste quelques plugins. Mais j’aime vraiment l’idée de disposer d’un backend VCS, car je peux synchroniser localement avec le backend, l’exporter facilement et utiliser toutes les fonctionnalités de Git ou de Mercurial.

Je me souviens qu’il existe un assistant distant Git pour MediaWiki qui est une solution de type pont entre l’API MediaWiki via HTTP et Git. Je l’ai aussi testé et j’ai le sentiment que cette extension Git est très crue et semble fonctionner très lentement, ce qui provoque parfois même un redémarrage du clonage Git (probablement à cause des performances réelles du wiki, mais pas sûrement), et pourrait probablement causer un autre problème. Je n'avais jamais réussi à obtenir un historique complet, malheureusement.

Existe-t-il un moyen d'utiliser Git ou Mercurial en tant que véritable back-end MediaWiki?

MODIFIER:

Il semble que je recherche une solution simple de réplication complète des données sur le wiki (obligatoirement: articles, pages de discussion, modèles, fichiers; facultatif: probablement la base de données de l’utilisateur (en supposant que le VCS stocke les informations de l’utilisateur lui-même, ou quelque chose comme Mercurial ACL, peu importe) et autres choses mineures qui ne sont pas étroitement liées au contenu du wiki en soi) ainsi qu’une infrastructure facile à migrer.

6
Lyubomyr Shaydariv

Je pense qu'il n'y en a pas (en utilisant un logiciel sur étagère) pour les raisons suivantes.

Sql et git sont des systèmes de stockage très différents par leur conception.

SQL est sur le point de stocker beaucoup de données profondément interconnectées dans un seul gros morceau d'un fichier. Permettant ainsi une indexation et une recherche efficaces.

Git consiste à stocker du texte de programmation dans de nombreux petits fichiers avec la supposition non écrite que le contenu de ces fichiers est aussi indépendant que possible . Cela permet une fusion plus facile, car les modifications apportées à un fichier ne doivent généralement pas affecter d’autres fichiers (du moins dans un monde idéal).

La conception de MediaWiki est étroitement intégrée à l'utilisation d'un SGBDR comme stockage et de MySQL en particulier. Ils auraient pu choisir un nombre quelconque de systèmes de stockage, mais ils ont choisi celui-ci et ce choix affecte probablement de nombreuses parties du système. Comme mentionné sur leur wiki, il y a environ 2 ans, un projet était en cours pour développer une fonctionnalité de back-end git, mais celle-ci semble avoir été abandonnée.

Si les développeurs ne le prennent pas en charge, votre seule autre option consiste à utiliser quelque chose qui ressemble à un serveur SQL pour MediaWiki, mais qui est en réalité un ensemble de fichiers "texte" lâches qui peuvent être gérés par un (D) VCS tel que git.

Les connecteurs ODBC existent pour prendre en charge des collections de fichiers à plat sur la plupart des plates-formes, voire toutes, mais leurs fonctionnalités peuvent ne pas être suffisamment complètes pour faire office de serveur SQL. Le problème est que MediaWiki n'attend aucune tierce partie pour modifier ses tables de données. L'acceptation d'un correctif de ces fichiers par une tierce partie devrait donc être effectuée de manière à ne pas compromettre la cohérence interne de la base de données.

Cela est certainement possible pour certains, en particulier pour les applications simples, mais cela dépend beaucoup de l'application et MediaWiki est assez complexe.

Vous avez le poids des avantages spécifiques de l’utilisation de l’un des wiki disponibles dans le style "build for git" et des fonctionnalités . ils n'ont pas comparé à MediaWiki .

2
John McNamara

MediaWiki a une couche d’abstraction de stockage qui rend cela techniquement possible (la page liée parle de l’utilisation de bases de données externes mais elle n’est pas limitée à cela; voir la documentation de la classe ExternalStore pour détails). Vous devez écrire votre propre sous-classe ExternalStoreMedium . Le wiki aurait toujours un backend SGBDR, mais le texte de la page serait stocké dans git.

En pratique, je doute fort que cela simplifierait les choses pour vous.

2
Tgr