Задача: маємо багато партитур, опублікованих на сайті під WordPress, інтенсивно з ними працюємо, — тож варто мати механізм поновлення партитур після редагування. Ноти набираємо у LilyPond.
Дуже коротко:
- На сайті публікуємо партитури із додаванням суфікса відповідно до дати та часу збереження (генерування) партитури, напр. назва файлу
ОйЧийТоКіньСтоїть_20170406_175520.pdf
означає, що партитуру було згенеровано з файлуОйЧийТоКіньСтоїть.ly
6 квітня 2017 року о 17:55:20. Звісно, такі суфікси додаються автоматично при генеруванні. Таким чином, до речі, уникаємо можливих нюансів із кешуванням опублікованого. - LilyPond використовує простий текстовий формат, тому використовуємо систему зберігання та відстеження версій Mercurial Git.
- На власному комп’ютері редагуємо партитуру, після чого:
git commit && git push
. - На сервері маємо те саме сховище Git; після редагування виконуємо
git pull
. - На подію
post-merge
на сервері сконфігурованоhook
, який запускає скрипт. - Скрипт видає перелік файлів
.ly
, які, імовірно, треба поновити на сайті WordPress. При цьому ми могли редагувати, наприклад,ОйЧийТоКіньСтоїть_alto.lyi
(а не самОйЧийТоКіньСтоїть.ly
) — скрипт показує саме «головний» файл. - Наступні кроки може виконувати цей саме скрипт, проте це не задача сховища ,) Віддамо це іншому скрипту.
- Інший скрипт бере файл по файлу усі партитури, які, імовірно, треба поновити. Для кожної партитури:
- Знаходимо у каталозі
wp-uploads
нашого сайту раніше завантажені файли:ОйЧийТоКіньСтоїть_([0-9]{8}_[0-9]{6}).pdf
. - Якщо щось знайшли — виконуємо
lilypond -o ОйЧийТоКіньСтоїть_`date +"%Y%m%d_%H%M%S"` ОйЧийТоКіньСтоїть.ly
. - Якщо успішно — кличемо
wp cli
! Він замінить (операціяsearch-replace
) у табличках WordPress усі згадкиОйЧийТоКіньСтоїть_<стара_дата>
наОйЧийТоКіньСтоїть_<нова_дата>
. - Видаляємо у
wp-uploads
старі файли, переносимо туди нові.
- Знаходимо у каталозі
І все)
Насправді це все трохи складніше, бо ми використовуємо мітки для генерування різних варіантів із одного джерела (при цьому файли з мітками можуть називатися ОйЧийТоКіньСтоїть--Torig_20170407_101222.pdf
). Крім того, до якихось файлів WordPress уже міг додати «порядковий номер», тоді назва буде, наприклад, така: ОйЧийТоКіньСтоїть--Torig_20170407_101222-1.pdf
.
Але це все легко вирішується.
Звісно ж, це можна застосувати не тільки до партитур, а й до будь-яких файлів, які треба періодично поновлювати.
До речі, про сервер зі сховищем. Це той же, де сайт, чи «на балконі», а десь інде лише резервні копії?
(про своє ніяк не вирішу, де що зберігати)
Ну, наше сховище лежить у бітовомукошикові (bitbucket.org). Тобто, «головне».
На сервері — рівноправна «робоча копія», там треба також lilypond та всі шрифти (якщо не власні ліліпондячі).