Серверная часть MediaWiki VCS? (Предпочтительно DVCS, такие как Git или Mercurial) [закрыто]


Как давний пользователь MediaWiki, я хотел бы начать новый вики-проект, потому что я действительно ценю зрелость MediaWiki и очень гибкие и мощные возможности. Но у меня есть сомнения в том, что я хочу использовать всю инфраструктуру MediaWiki для нового проекта.

Скажем, я бы очень хотел иметь серверную часть VCS, чтобы все изменения в вики были в одном месте. Насколько я знаю, MediaWiki поддерживает только бэкенды RBDMS. Недавно я наткнулся на старый вопрос, заданный около четырех лет назад. Поиграв некоторое время с Гититом и Икивики, я почувствуйте, что Gitit - лучший выбор, позволяющий интегрировать с GIT или Mercurial, и это не статический компилятор, в отличие от Ikiwiki. Gitit, похоже, гораздо более легкое решение, чем MediaWiki, однако, боюсь, оно даже на 10 % слабее по сравнению с MediaWiki: я не мог сравнить версии через веб-интерфейс, не уверен, смогу ли я использовать категории или шаблоны, которые имеют решающее значение для меня, всего несколько плагинов. Но мне действительно нравится идея иметь серверную часть VCS, потому что я могу синхронизировать ее локально, вы можете легко экспортировать его и использовать все функции Git или Mercurial.

Я помню, что есть Удаленный помощник Git для MediaWiki, который представляет собой мостоподобное решение между API MediaWiki по HTTP и Git. Я также протестировал его, и у меня было сильное ощущение, что это расширение Git очень сырое и, казалось, работает очень медленно, что в некоторых случаях даже приводит к перезапуску клонирования Git (возможно, из-за реальной производительности вики, не уверен), и, вероятно, может вызвать другие проблемы. Мне никогда не удавалось получить полная свалка истории, к сожалению.

Есть ли способ использовать Git или Mercurial в качестве реального бэкенда MediaWiki?

ИЗМЕНИТЬ:

Кажется, я ищу простое решение для полной репликации данных Вики (должно быть: статьи, страницы обсуждений, шаблоны, файлы; необязательно: возможно, база данных пользователей (при условии, что VCS хранит саму информацию о пользователе или, может быть, что-то вроде ACL Mercurial, что угодно) и другие мелкие вещи, которые не тесно связаны с контентом вики как таковым), а также простой в использовании перенос инфраструктуры.

Author: Community, 2015-06-18

2 answers

Я думаю, что нет (с использованием готового программного обеспечения) по следующим причинам.

Sql и git - это очень разные системы хранения данных по дизайну.

Sql предназначен для хранения большого количества глубоко взаимосвязанных данных в одном большом куске файла. Таким образом, обеспечивается эффективная индексация и поиск.

Git предназначен для хранения программного текста во многих небольших файлах с неписаным предположением, что содержимое этих файлов настолько независимо, насколько это возможно. Таким образом, позволяя легче слияние, потому что изменения в одном файле, как правило, не должны влиять на другие файлы (по крайней мере, в идеальном мире).

Дизайн MediaWiki тесно интегрирован в использование СУБД в качестве хранилища и, в частности, MySQL. Они могли бы выбрать любое количество других систем хранения, но они выбирают эту, и этот выбор, вероятно, влияет на многие части системы. Как упоминалось в их вики, около 2 лет назад был запущен проект по разработке серверной функции git, но, похоже, это было заброшенный.

Если разработчики не поддерживают это, то ваш единственный другой вариант - использовать что-то, что выглядит как SQL-сервер для MediaWiki, но на самом деле представляет собой набор свободных "текстовых" файлов, которыми может управлять (D)VCS, такой как git.

Соединители ODBC существуют для поддержки коллекций плоских файлов на большинстве, если не на всех платформах, но их возможности могут быть недостаточно полными, чтобы выдавать себя за sql-сервер. Проблема в том, что MediaWiki не ожидает, что какие-либо третьи стороны изменят его данные таблицы в любом случае, поэтому принятие исправления к этим файлам от третьей стороны должно быть выполнено таким образом, чтобы не нарушать внутреннюю согласованность базы данных.

Это, безусловно, возможно для некоторых, особенно для простых приложений, но это очень сильно зависит от приложений, а MediaWiki довольно сложен.

У вас есть возможность взвесить конкретные преимущества использования одной из доступных вики-страниц в стиле "сборка для git" по сравнению с функциями, которых у них нет по сравнению с МедиаВики.

 2
Author: John McNamara, 2015-06-18 21:53:07

MediaWiki имеет уровень абстракции хранилища , который делает это технически возможным (на связанной странице говорится об использовании внешних баз данных, но на самом деле этим не ограничивается; подробности см. в документации класса externalstore). Вам придется написать свой собственный подкласс externalstoremedium. Вики, конечно, по-прежнему будет иметь серверную часть СУБД, но вместо этого текст страницы будет храниться в git.

На практике я сильно сомневаюсь, что это будет сделайте все проще для вас.

 2
Author: Tgr, 2015-06-20 21:20:22