Difference between revisions of "MW Import&Export/ru"
(→Выборка страниц) |
m (Reverted edits by Dsoft (talk) to last revision by VitaliyFilippov) |
||
(23 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
Оригинальный импорт/экспорт MediaWiki экспортирует только текст статей, но не экспортирует изображения. | Оригинальный импорт/экспорт MediaWiki экспортирует только текст статей, но не экспортирует изображения. | ||
− | Это досадное недоразумение исправлено в сборке [[MediaWiki4Intranet]] ( | + | Это досадное недоразумение исправлено в сборке [[MediaWiki4Intranet]] ({{Bug|47362}}) с помощью патча в код MediaWiki (см. [[#Ссылки]]). Также добавлены '''многие''' полезные фичи. Они перечислены ниже. |
− | + | При всех этих доработках механизм импорта/экспорта обратно совместим с экспортными файлами стандартных версий MediaWiki. То есть, в модифицированную Wiki можно загрузить экспортный файл из стандартной, а в стандартную — из модифицированной, в случае, если не экспортируются файлы. | |
− | + | ||
== Импорт/экспорт файлов == | == Импорт/экспорт файлов == | ||
Реализована '''поддержка импорта и экспорта загруженных файлов'''. Есть два варианта: | Реализована '''поддержка импорта и экспорта загруженных файлов'''. Есть два варианта: | ||
− | * Либо данные файла включаются прямо в экспортный файл, который при этом становится | + | * Либо данные файла включаются прямо в экспортный файл, который при этом становится архивом вместо XML-файла. В старой реализации в качестве архивов использовался multipart/related, в новой — простой ZIP. |
* Либо экспортный файл остаётся XML, в него для каждой экспортируемой версии файла включается HTTP-ссылка на файл и SHA1-хэш. При импорте файлы загружаются целевой Wiki по необходимости (если версии с совпадающим хэшем ещё нет). Это позволяет уменьшить объём экспортного файла, но зато не может использоваться при отсутствии прямого HTTP-доступа к вики, из которой был выгружен экспортный файл. | * Либо экспортный файл остаётся XML, в него для каждой экспортируемой версии файла включается HTTP-ссылка на файл и SHA1-хэш. При импорте файлы загружаются целевой Wiki по необходимости (если версии с совпадающим хэшем ещё нет). Это позволяет уменьшить объём экспортного файла, но зато не может использоваться при отсутствии прямого HTTP-доступа к вики, из которой был выгружен экспортный файл. | ||
Line 22: | Line 21: | ||
* И/или из пространства имён. | * И/или из пространства имён. | ||
* Включить используемые шаблоны, изображения и/или страницы, связанные ссылками с уже выбранными («замыкание по ссылкам»). | * Включить используемые шаблоны, изображения и/или страницы, связанные ссылками с уже выбранными («замыкание по ссылкам»). | ||
− | *: Причём, это «замыкание» работает корректно для любой глубины вложенности включения шаблонов, для изображений, включённых в шаблоны, | + | *: Причём, это «замыкание» работает корректно для любой глубины вложенности включения шаблонов, для изображений, включённых в шаблоны, и т. п. |
*: А ещё, выборка связанных страниц теперь применяется именно через «Добавление страниц», а не «невидимым» для пользователя путём при самом экспорте. То есть, при клике на кнопку «Экспорт» экспортируется ровно то, что запрошено в списке страниц, и не больше. | *: А ещё, выборка связанных страниц теперь применяется именно через «Добавление страниц», а не «невидимым» для пользователя путём при самом экспорте. То есть, при клике на кнопку «Экспорт» экспортируется ровно то, что запрошено в списке страниц, и не больше. | ||
После выборки применяются задаваемые рядом же фильтры: | После выборки применяются задаваемые рядом же фильтры: | ||
− | * Выборка только изменённых после заданной даты страниц из списка. | + | * Выборка только изменённых после заданной даты страниц из списка — даёт возможность «инкрементальной» репликации только страниц, изменённых за последнее время. |
* Удаление из списка страниц в заданной категории (фильтр «не в категории»). | * Удаление из списка страниц в заданной категории (фильтр «не в категории»). | ||
− | Кроме того, поддерживаются права [[IntraACL]] | + | Кроме того, поддерживаются права [[IntraACL]] — закрытые от чтения страницы не попадают в список выбранных, также в список в этом случае не попадает лишняя страница «Доступ запрещён». |
== Выявление конфликтов == | == Выявление конфликтов == | ||
− | Оригинальный импорт MediaWiki работает | + | Оригинальный импорт MediaWiki работает просто — заливает ревизии и говорит «готово». В новых версиях он говорит чуть больше — «готово, что-то залил», или «готово, ничего не залил» на каждую страницу. Однако если часто использовать импорт-экспорт, этого недостаточно: хочется видеть, у кого версия страница была новее, вносил ли кто-то изменения локально и т. п. По сути, это добавляет [[EnPedia:Distributed_Version_Control_System|DVCS]]-возможности в MediaWiki — наборами ревизий статей становится можно обмениваться в широком круге Wiki-систем. |
Вот это и есть «выявление конфликтов» импорта и расширенный отчёт по импортированным страницам. Он включает в себя по сообщению на каждую импортированную страницу, сообщений бывает 5 вариантов: | Вот это и есть «выявление конфликтов» импорта и расширенный отчёт по импортированным страницам. Он включает в себя по сообщению на каждую импортированную страницу, сообщений бывает 5 вариантов: | ||
Line 41: | Line 40: | ||
# N версий (новая страница). | # N версий (новая страница). | ||
# N версий (конфликт: XX (импорт) и YY (локальная)). | # N версий (конфликт: XX (импорт) и YY (локальная)). | ||
− | |||
− | |||
== Установка == | == Установка == | ||
Установка простая: | Установка простая: | ||
− | * Скачайте патч для вашей версии MediaWiki, примените его командой <tt>patch -p0 < '''скачанный_патч.diff'''</tt>. | + | * Скачайте [[#Ссылки|патч]] для вашей версии MediaWiki, примените его командой <tt>patch -p0 < '''скачанный_патч.diff'''</tt>. |
* Если патча для вашей версии MediaWiki нет в наличии, либо обновите MediaWiki, либо попробуйте патч от ближайших версий, либо ":-(" и придётся копаться руками. | * Если патча для вашей версии MediaWiki нет в наличии, либо обновите MediaWiki, либо попробуйте патч от ближайших версий, либо ":-(" и придётся копаться руками. | ||
− | * Если вы установили патч на '''непустую''' инсталляцию MediaWiki, скачайте также скрипт обслуживания (см. [[#Ссылки]]), поместите его в каталог maintenance и запустите оттуда с помощью команды <tt>php file-upload-renamer.php</tt>. | + | * Если вы установили патч на '''непустую''' инсталляцию MediaWiki, скачайте также скрипт обслуживания (см. [[#Ссылки]]), поместите его в каталог <tt>maintenance</tt> и запустите оттуда с помощью команды <tt>php file-upload-renamer.php</tt>. |
== TODO == | == TODO == | ||
− | |||
− | |||
== Изменения == | == Изменения == | ||
* 2011-02-22: Отключено добавление пустой ревизии-маркера после импорта, ибо при регулярной встречной репликации может приводить к бесконечному размножению ревизий. | * 2011-02-22: Отключено добавление пустой ревизии-маркера после импорта, ибо при регулярной встречной репликации может приводить к бесконечному размножению ревизий. | ||
− | * 2011-03-15: Исправлено поведение флажка «Только текущая версия, без полной предыстории» для экспортируемых | + | * 2011-03-15: Исправлено поведение флажка «Только текущая версия, без полной предыстории» для экспортируемых файлов — ранее вне зависимости от его положения экспортировались все версии самого файла. Исправлена проверка SHA1-хешей, оказывается, MediaWiki использует не hex-кодировку, а base36-кодировку хешей. |
* 2011-05-19: ('''Изменения доступны только в патчах под MediaWiki4Intranet и MediaWiki 1.16.2''', и недоступны для старых версий или trunk’а): Улучшен механизм выборки статей для экспорта: | * 2011-05-19: ('''Изменения доступны только в патчах под MediaWiki4Intranet и MediaWiki 1.16.2''', и недоступны для старых версий или trunk’а): Улучшен механизм выборки статей для экспорта: | ||
*# Автоматическая выборка используемых изображений, шаблонов и связанных страниц перемещена в «Добавление страниц». Экспорт теперь экспортирует '''только''' страницы из поля с их списком. | *# Автоматическая выборка используемых изображений, шаблонов и связанных страниц перемещена в «Добавление страниц». Экспорт теперь экспортирует '''только''' страницы из поля с их списком. | ||
*# Добавлен фильтр «страницы '''не''' в категории», применяемый '''после''' всех выборок ко всему списку страниц, что позволяет «запретить» экспорт какой-то категории. | *# Добавлен фильтр «страницы '''не''' в категории», применяемый '''после''' всех выборок ко всему списку страниц, что позволяет «запретить» экспорт какой-то категории. | ||
− | *# Изменено поведение фильтра по дате | + | *# Изменено поведение фильтра по дате модификации — он теперь, как и предыдущий, применяется '''после''' всех выборок, и это позволяет сделать «инкрементальный» экспорт/репликацию — экспорт только страниц, изменённых после заданной даты. |
*# Оптимизирован код, выборка страниц теперь работает заметно быстрее. | *# Оптимизирован код, выборка страниц теперь работает заметно быстрее. | ||
+ | * 2011-12-12: ('''Изменения только в версиях для MediaWiki4Intranet 1.16.2 и trunk, для более старых недоступны''') | ||
+ | *# Отчёт об импорте загруженных файлов. | ||
+ | *# Стандартный ZIP вместо кривых multipart/related "архивов". | ||
+ | *# Схема именования старых ревизий файлов изменена для исключения коллизий и обратной совместимости с обычными версиями MediaWiki. | ||
== Ссылки == | == Ссылки == | ||
− | * [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches-1.14.1/Y-001-import-export-images-and-conflicts.diff?r=mw4install Патч из состава MediaWiki4Intranet 1.14.1], требует | + | * [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches-1.14.1/Y-001-import-export-images-and-conflicts.diff?r=mw4install Патч из состава MediaWiki4Intranet 1.14.1], отличается от патча для «обычной» MediaWiki только тем, что требует патча [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches-1.14.1/Y-000-translit-upload-filenames.diff?r=mw4install translit-upload-filenames]. Не включает в себя изменений, внесённых позже 2011-02-22. |
− | * [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches/Y-001-import-export-images-and-conflicts.diff?r=mw4install Патч из состава MediaWiki4Intranet 1.16.2], требует | + | * [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches/Y-001-import-export-images-and-conflicts.diff?r=mw4install Патч из состава MediaWiki4Intranet 1.16.2], отличается от патча для «обычной» MediaWiki только тем, что требует патча [http://mediawiki4intranet.googlecode.com/hg/custisinstall/patches/Y-000-translit-upload-filenames.diff?r=mw4install translit-upload-filenames]. |
− | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch-1.14.1.diff?r=files Патч для MediaWiki 1.14.1]. | + | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch-1.14.1.diff?r=files Патч для MediaWiki 1.14.1], не содержит изменений после 2011-02-22. |
* [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch-1.16.2.diff?r=files Патч для MediaWiki 1.16.2]. | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch-1.16.2.diff?r=files Патч для MediaWiki 1.16.2]. | ||
− | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch- | + | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/MW4Intranet-ImportExportPatch-svn104165.diff?r=files Патч для MediaWiki 1.18] (для [http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3?pathrev=104165 svn104165]). |
* [http://mediawiki4intranet.googlecode.com/hg/tools/wiki-crawl-export.php?r=mw4install Скрипт-crawler] для экспорта подобных дампов из '''стандартных''' MediaWiki без поддержки сего патча | * [http://mediawiki4intranet.googlecode.com/hg/tools/wiki-crawl-export.php?r=mw4install Скрипт-crawler] для экспорта подобных дампов из '''стандартных''' MediaWiki без поддержки сего патча | ||
− | * [http://mediawiki4intranet.googlecode.com/hg/import-export-patch/file-upload-renamer.php?r=files Скрипт обслуживания (maintenance)] для миграции схемы именования старых ревизий загруженных файлов. | + | * <s>[http://mediawiki4intranet.googlecode.com/hg/import-export-patch/file-upload-renamer.php?r=files Скрипт обслуживания (maintenance)] для миграции схемы именования старых ревизий загруженных файлов.</s> Требует обновления. |
* Патч отправлен в [https://bugzilla.wikimedia.org/show_bug.cgi?id=22881 Wikimedia Bug 22881]. Надеемся, что он будет включён в код будущей версии MediaWiki после каких-нибудь доработок. | * Патч отправлен в [https://bugzilla.wikimedia.org/show_bug.cgi?id=22881 Wikimedia Bug 22881]. Надеемся, что он будет включён в код будущей версии MediaWiki после каких-нибудь доработок. | ||
− | [[ | + | [[Category:MediaWiki]] |
+ | [[en:MW Import&Export/en]] |
Latest revision as of 19:11, 8 February 2013
Оригинальный импорт/экспорт MediaWiki экспортирует только текст статей, но не экспортирует изображения.
Это досадное недоразумение исправлено в сборке MediaWiki4Intranet (Bug:47362) с помощью патча в код MediaWiki (см. #Ссылки). Также добавлены многие полезные фичи. Они перечислены ниже.
При всех этих доработках механизм импорта/экспорта обратно совместим с экспортными файлами стандартных версий MediaWiki. То есть, в модифицированную Wiki можно загрузить экспортный файл из стандартной, а в стандартную — из модифицированной, в случае, если не экспортируются файлы.
Contents
Импорт/экспорт файлов
Реализована поддержка импорта и экспорта загруженных файлов. Есть два варианта:
- Либо данные файла включаются прямо в экспортный файл, который при этом становится архивом вместо XML-файла. В старой реализации в качестве архивов использовался multipart/related, в новой — простой ZIP.
- Либо экспортный файл остаётся XML, в него для каждой экспортируемой версии файла включается HTTP-ссылка на файл и SHA1-хэш. При импорте файлы загружаются целевой Wiki по необходимости (если версии с совпадающим хэшем ещё нет). Это позволяет уменьшить объём экспортного файла, но зато не может использоваться при отсутствии прямого HTTP-доступа к вики, из которой был выгружен экспортный файл.
Здесь также приходится использовать модификацию filerepo/LocalFile.php, потому что в оригинале имена старых ревизий загруженных файлов в MediaWiki включает в себя некую странную дату «момента архивирования», обычно равную дате следующей ревизии, да ещё не всегда точную, а плюс-минус одна секунда. С патчем это поведение меняется и в имена файлов ревизии включается дата самой ревизии. При этом имена архивных ревизий становятся независимы от имени следующей ревизии и сильно упрощается и становится логичнее импорт.
В связи с этим, если вы устанавливаете патч на непустую инсталляцию MediaWiki, нужно использовать небольшой скрипт обслуживания (см. #Ссылки) для переименования существующих ревизий загруженных файлов.
Выборка страниц
Улучшенная выборка страниц для экспорта:
- Из категорий, включая подкатегории.
- И/или из пространства имён.
- Включить используемые шаблоны, изображения и/или страницы, связанные ссылками с уже выбранными («замыкание по ссылкам»).
- Причём, это «замыкание» работает корректно для любой глубины вложенности включения шаблонов, для изображений, включённых в шаблоны, и т. п.
- А ещё, выборка связанных страниц теперь применяется именно через «Добавление страниц», а не «невидимым» для пользователя путём при самом экспорте. То есть, при клике на кнопку «Экспорт» экспортируется ровно то, что запрошено в списке страниц, и не больше.
После выборки применяются задаваемые рядом же фильтры:
- Выборка только изменённых после заданной даты страниц из списка — даёт возможность «инкрементальной» репликации только страниц, изменённых за последнее время.
- Удаление из списка страниц в заданной категории (фильтр «не в категории»).
Кроме того, поддерживаются права IntraACL — закрытые от чтения страницы не попадают в список выбранных, также в список в этом случае не попадает лишняя страница «Доступ запрещён».
Выявление конфликтов
Оригинальный импорт MediaWiki работает просто — заливает ревизии и говорит «готово». В новых версиях он говорит чуть больше — «готово, что-то залил», или «готово, ничего не залил» на каждую страницу. Однако если часто использовать импорт-экспорт, этого недостаточно: хочется видеть, у кого версия страница была новее, вносил ли кто-то изменения локально и т. п. По сути, это добавляет DVCS-возможности в MediaWiki — наборами ревизий статей становится можно обмениваться в широком круге Wiki-систем.
Вот это и есть «выявление конфликтов» импорта и расширенный отчёт по импортированным страницам. Он включает в себя по сообщению на каждую импортированную страницу, сообщений бывает 5 вариантов:
- Все редакции были ранее импортированы. Локальных изменений нет.
- Все редакции были ранее импортированы. Страница изменена локально.
- N версий.
- N версий (новая страница).
- 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’а): Улучшен механизм выборки статей для экспорта:
- Автоматическая выборка используемых изображений, шаблонов и связанных страниц перемещена в «Добавление страниц». Экспорт теперь экспортирует только страницы из поля с их списком.
- Добавлен фильтр «страницы не в категории», применяемый после всех выборок ко всему списку страниц, что позволяет «запретить» экспорт какой-то категории.
- Изменено поведение фильтра по дате модификации — он теперь, как и предыдущий, применяется после всех выборок, и это позволяет сделать «инкрементальный» экспорт/репликацию — экспорт только страниц, изменённых после заданной даты.
- Оптимизирован код, выборка страниц теперь работает заметно быстрее.
- 2011-12-12: (Изменения только в версиях для MediaWiki4Intranet 1.16.2 и trunk, для более старых недоступны)
- Отчёт об импорте загруженных файлов.
- Стандартный ZIP вместо кривых multipart/related "архивов".
- Схема именования старых ревизий файлов изменена для исключения коллизий и обратной совместимости с обычными версиями MediaWiki.
Ссылки
- Патч из состава MediaWiki4Intranet 1.14.1, отличается от патча для «обычной» MediaWiki только тем, что требует патча translit-upload-filenames. Не включает в себя изменений, внесённых позже 2011-02-22.
- Патч из состава MediaWiki4Intranet 1.16.2, отличается от патча для «обычной» MediaWiki только тем, что требует патча translit-upload-filenames.
- Патч для MediaWiki 1.14.1, не содержит изменений после 2011-02-22.
- Патч для MediaWiki 1.16.2.
- Патч для MediaWiki 1.18 (для svn104165).
- Скрипт-crawler для экспорта подобных дампов из стандартных MediaWiki без поддержки сего патча
-
Скрипт обслуживания (maintenance) для миграции схемы именования старых ревизий загруженных файлов.Требует обновления. - Патч отправлен в Wikimedia Bug 22881. Надеемся, что он будет включён в код будущей версии MediaWiki после каких-нибудь доработок.