MW Import&Export/ru

From Wiki4Intranet
< MW Import&Export
Revision as of 13:16, 11 March 2012 by VitaliyFilippov (Talk | contribs) (Импорт/экспорт файлов)

This is a page snapshot, showing old (but not deleted) versions of images and templates.
Jump to: navigation, search

Оригинальный импорт/экспорт MediaWiki экспортирует только текст статей, но не экспортирует изображения.

Это досадное недоразумение исправлено в сборке MediaWiki4Intranet (Bug:47362) с помощью патча в код MediaWiki (см. #Ссылки). Также добавлены многие полезные фичи. Они перечислены ниже.

При всех этих доработках механизм импорта/экспорта обратно совместим с экспортными файлами стандартных версий MediaWiki. То есть, в модифицированную Wiki можно загрузить экспортный файл из стандартной, а в стандартную — из модифицированной, в случае, если не экспортируются файлы.

Импорт/экспорт файлов

Реализована поддержка импорта и экспорта загруженных файлов. Есть два варианта:

  • Либо данные файла включаются прямо в экспортный файл, который при этом становится архивом вместо XML-файла. В старой реализации в качестве архивов использовался multipart/related, в новой — простой ZIP.
  • Либо экспортный файл остаётся XML, в него для каждой экспортируемой версии файла включается HTTP-ссылка на файл и SHA1-хэш. При импорте файлы загружаются целевой Wiki по необходимости (если версии с совпадающим хэшем ещё нет). Это позволяет уменьшить объём экспортного файла, но зато не может использоваться при отсутствии прямого HTTP-доступа к вики, из которой был выгружен экспортный файл.

Здесь также приходится использовать модификацию filerepo/LocalFile.php, потому что в оригинале имена старых ревизий загруженных файлов в MediaWiki включает в себя некую странную дату «момента архивирования», обычно равную дате следующей ревизии, да ещё не всегда точную, а плюс-минус одна секунда. С патчем это поведение меняется и в имена файлов ревизии включается дата самой ревизии. При этом имена архивных ревизий становятся независимы от имени следующей ревизии и сильно упрощается и становится логичнее импорт.

Caution.svg В связи с этим, если вы устанавливаете патч на непустую инсталляцию MediaWiki, нужно использовать небольшой скрипт обслуживания (см. #Ссылки) для переименования существующих ревизий загруженных файлов.

Выборка страниц

Улучшенная выборка страниц для экспорта:

  • Из категорий, включая подкатегории.
  • И/или из пространства имён.
  • Включить используемые шаблоны, изображения и/или страницы, связанные ссылками с уже выбранными («замыкание по ссылкам»).
    Причём, это «замыкание» работает корректно для любой глубины вложенности включения шаблонов, для изображений, включённых в шаблоны, и т. п.
    А ещё, выборка связанных страниц теперь применяется именно через «Добавление страниц», а не «невидимым» для пользователя путём при самом экспорте. То есть, при клике на кнопку «Экспорт» экспортируется ровно то, что запрошено в списке страниц, и не больше.

После выборки применяются задаваемые рядом же фильтры:

  • Выборка только изменённых после заданной даты страниц из списка — даёт возможность «инкрементальной» репликации только страниц, изменённых за последнее время.
  • Удаление из списка страниц в заданной категории (фильтр «не в категории»).

Кроме того, поддерживаются права IntraACL — закрытые от чтения страницы не попадают в список выбранных, также в список в этом случае не попадает лишняя страница «Доступ запрещён».

Выявление конфликтов

Оригинальный импорт MediaWiki работает просто — заливает ревизии и говорит «готово». В новых версиях он говорит чуть больше — «готово, что-то залил», или «готово, ничего не залил» на каждую страницу. Однако если часто использовать импорт-экспорт, этого недостаточно: хочется видеть, у кого версия страница была новее, вносил ли кто-то изменения локально и т. п. По сути, это добавляет DVCS-возможности в MediaWiki — наборами ревизий статей становится можно обмениваться в широком круге Wiki-систем.

Вот это и есть «выявление конфликтов» импорта и расширенный отчёт по импортированным страницам. Он включает в себя по сообщению на каждую импортированную страницу, сообщений бывает 5 вариантов:

  1. Все редакции были ранее импортированы. Локальных изменений нет.
  2. Все редакции были ранее импортированы. Страница изменена локально.
  3. N версий.
  4. N версий (новая страница).
  5. N версий (конфликт: XX (импорт) и YY (локальная)).

Установка

Установка простая:

  • Скачайте патч для вашей версии MediaWiki, примените его командой patch -p0 < скачанный_патч.diff.
  • Если патча для вашей версии MediaWiki нет в наличии, либо обновите MediaWiki, либо попробуйте патч от ближайших версий, либо ":-(" и придётся копаться руками.
  • Если вы установили патч на непустую инсталляцию MediaWiki, скачайте также скрипт обслуживания (см. #Ссылки), поместите его в каталог maintenance и запустите оттуда с помощью команды php file-upload-renamer.php.

TODO

Изменения

  • 2011-02-22: Отключено добавление пустой ревизии-маркера после импорта, ибо при регулярной встречной репликации может приводить к бесконечному размножению ревизий.
  • 2011-03-15: Исправлено поведение флажка «Только текущая версия, без полной предыстории» для экспортируемых файлов — ранее вне зависимости от его положения экспортировались все версии самого файла. Исправлена проверка SHA1-хешей, оказывается, MediaWiki использует не hex-кодировку, а base36-кодировку хешей.
  • 2011-05-19: (Изменения доступны только в патчах под MediaWiki4Intranet и MediaWiki 1.16.2, и недоступны для старых версий или trunk’а): Улучшен механизм выборки статей для экспорта:
    1. Автоматическая выборка используемых изображений, шаблонов и связанных страниц перемещена в «Добавление страниц». Экспорт теперь экспортирует только страницы из поля с их списком.
    2. Добавлен фильтр «страницы не в категории», применяемый после всех выборок ко всему списку страниц, что позволяет «запретить» экспорт какой-то категории.
    3. Изменено поведение фильтра по дате модификации — он теперь, как и предыдущий, применяется после всех выборок, и это позволяет сделать «инкрементальный» экспорт/репликацию — экспорт только страниц, изменённых после заданной даты.
    4. Оптимизирован код, выборка страниц теперь работает заметно быстрее.
  • 2011-12-12: (Изменения только в версиях для MediaWiki4Intranet 1.16.2 и trunk, для более старых недоступны)
    1. Отчёт об импорте загруженных файлов.
    2. Стандартный ZIP вместо кривых multipart/related "архивов".
    3. Схема именования старых ревизий файлов изменена для исключения коллизий и обратной совместимости с обычными версиями MediaWiki.

Ссылки