Синхронизация содержимого нескольких вики может быть полезна в ряде случаев, например, при зеркалировании одной вики в целях резервного копирования. Она также может использоваться для получения доступа к копии содержимого вики на мобильном устройстве без необходимости быть подключенным к сети.
Цели синхронизации
Частичная или полная синхронизация содержимого вики решает задачу наличия одинакового содержимого (не обязательно историю версий) при условии избегания конфликтов и поддержке слияния, обеспеченного соответствующим пользовательским интерфейсом с надлежащей степенью удобства. Для синхронизации не требуется обоюдной сетевой доступности вики, достаточно лишь чтобы вики, инициирующая синхронизацию, имела доступ к удалённой вики по HTTP.
Использование
Первым шагом является регистрация ИнтерВики-имени удалённой вики. Это может быть сделано на странице InterWikiMap или в файле intermap.txt (см. КакНастраивать).
Задайте параметр interwikiname в файле конфигурации wikiconfig.py. По умолчанию данный параметр закомментирован.
После этого необходимо создать что-то вроде «страницы задания», содержащей все параметры синхронизации. Эта страница будет дополняться логом процесса синхронизации. См. ниже список доступных параметров. Параметры задаются в формате словаря (см. ПомощьПоСловарям). Примером и подспорьем при составлении задания является ШаблонЗаданиеСинхронизации, который уже содержит ряд заданных параметров.
После создания страницы достаточно выбирать «SyncPages» в списке доступных действий и запустить синхронизацию.
Конфигурация
Предварительно проверьте параметр конфигурации удалённой вики actions_excluded — его значение по умолчанию (см. ${PathToYourPythonInstall}/MoinMoin/config/multiconfig.py, например /usr/local/lib/python2.5/site-packages/MoinMoin/config/multiconfig.py в случае установки Python 2.5 по умолчанию) запрещает ряд действий, в том числе действие xmlrpc (это сделано для того, чтобы не делать вики доступной для автоматических операций чтения/записи с использованием XML RPC, кроме тех случаев, когда это не будет явно необходимо). Для разрешения действия xmlrpc (синхронизация вики основана на XML RPC, посему она не будет работать до тех пор, пока не будет разрешено выполнение действия, его обеспечивающего), удалите это действие из списка, например, указав в конфигурации экземпляра вики следующее:
1 actions_excluded = [i for i in actions_excluded if i != 'xmlrpc']
Возможно, при этом Вы захотите настроить списки доступа, см. ПомощьПоСпискамДоступа
За исключением параметра remoteWiki, все параметры опциональны. Параметры должны храниться в форме словаря (см. также WikiDict) на странице задания.
remoteWiki:: имя ИнтерВики удалённой вики. Важно отметить, что для того, чтобы доступ по имени ИнтерВики был выполнен успешно, оно должно быть указано таковым в конфигурации удалённой вики (в параметре interwikiname) её администратором. В противном случае будет выдана ошибка.
- remotePrefix
- префикс, добавляемый в начале имени удалённой страницы при поиске страниц и их отправке. В случае нежелания засорения основного пространства имён удалённой вики, можно установить этот параметр для создания всех страниц как вложенных страниц некоей страницы удалённой вики.
- localPrefix
- префикс, добавляемый в начале имени локальной странице при получении новых страниц. Используется, в основном, в случае нежелания засорения основного пространства имён локальной вики. Можно использовать данный параметр для агрегации нескольких различных удалённых сайтов на одном локальном.
- pageMatch
- в случае наличия данного параметра, его значение используется как регулярное выражение, которое определяет страницы для синхронизации.
- pageList
данный параметр (в случае его наличия) задаёт список страниц для синхронизации. При задании этого параметра параметр pageMatch не используется. Имена странц разделяются запятыми, никакой синтаксис (например, [[...]] для задания свободных ссылок) не должен использоваться.
- groupList
при задании данного параметра в качестве источника списков страниц для синхронизации используются перечисленные в его значении имена страниц групп. Параметры pageMatch и pageList при этом игнорируются. Важно отметить, что выбор страниц для синхронизации не выполняется рекурсивно (то есть, если на странице группы указана другая группа, то страницы, указанные на ней, не будут синхронизированы, только она сама). Синтаксис указания списка страниц групп такой же, как и у параметра pageList.
- direction
направление выполнения синхронизации. Может принимать значения «Down» (вниз) или «Both» (двунаправленно). Значения регистронезависимы. «Down» означает, что локальные изменения не записываются на удалённую вики, «Both» — что изменения объединяются. Важно отметить, что односторонняя синхронизация в некоторых случаях медленнее и использует больше трафика.
- user
- Имя пользователя, используемое для аутентификации на удалённой вики.
- password
Пароль, используемый для аутентификации на удалённой вики. Не указывайте пароль на странице в случае, если не можете гарантировать, что никто более не сможет его прочитать! В этом случае задайте только значение параметра user — МойнМойн запросит пароль автоматически.
Некоторые правила
- Как указано выше, история версий не синхронизируется, только разница (при объединении изменений). Так что комментарии к правкам, сделанные на другой вики, будут недоступны, и так далее
- Синхронизацию можно начинать из любой вики.
- Страницы, на которых конфликты редактирования разрешить не удаётся, не синхронизируются. Они синхронизируются в случае, если конфликт разрешён на одной из сторон.
- Синхронизация переименованных страниц на данный момент не поддерживается.
- Прикреплённые файлы на данный момент не синхронизируются (это, возможно, изменится в будущем, когда прикреплённые файлы станут равноправными элементами)
Советы новичкам
Важно помнить, что при задании имени ИнтерВики в конфигурации вики используется строковые литералы Unicode, то есть, с префиксом «u»:
1 interwikiname = u'mywiki'