Git
Rudel виконує операції PHP на основі Git через Pitmaster. Для цього не потрібен двійковий файл git на хості. Доступ до віддалених репозиторіїв здійснюється через HTTP(S) або SSH.
Кожна пісочниця має одну назву гілки — rudel/{sandbox-id}, яку використовують усі наведені нижче робочі процеси Git.
Клонування віддаленого репозиторію в нову пісочницю
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
Rudel створює пісочницю, клонує віддалений репозиторій у themes/my-theme усередині каталогу пісочниці (назва каталогу збігається з назвою репозиторію), створює гілку rudel/{id} від типової гілки та перемикається на неї. З параметром --type=plugin клон переміщується в plugins/my-theme. Віддалений репозиторій, каталог і базова гілка зберігаються в пісочниці для подальших надсилань змін. Якщо клонування не вдається, пісочниця зберігається, а команда виводить попередження.
Клон — це робоча копія для wp rudel push. У поточному випуску пісочниця її не обслуговує (проблема #11):
- Пісочниця обслуговує тему, вибрану за допомогою
--theme, або активну тему хоста, скопійовану з хоста під час створення пісочниці.--themeмає вказувати на тему, встановлену на хості, тому клон обслуговується лише тоді, коли назва репозиторію збігається з цим ідентифікатором, а клонування записує файли в скопійований каталог теми. - Плагіни завжди завантажуються з каталогу плагінів хоста, тому клон
--type=pluginніколи не запускається.
Пов'язані робочі дерева
Коли ви клонуєте пісочницю, каталог тем якої є репозиторієм Git, Rudel створює для нової пісочниці пов'язане робоче дерево замість копіювання файлів:
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Робоче дерево використовує гілку rudel/{new-id}. Rudel записує його метадані в нову пісочницю під явною назвою робочого дерева, сформованою на основі ID пісочниці, типу вмісту та ідентифікатора теми, тож пісочниці з однаковим ідентифікатором теми не конфліктують. Знищення пісочниці видаляє робоче дерево та його гілку.
wp rudel cleanup --merged враховує лише ці пов'язані робочі дерева. Див. Очищення.
Надсилання змін
wp rudel push feature-x-3be7 --message="Update checkout template"
push фіксує всі зміни в клоні та надсилає гілку rudel/{id} до origin. Якщо змін немає, команда повертає No changes to push..
--git=<remote>задає віддалений репозиторій, якщо його ще не збережено; після першого успішного надсилання він запам'ятовується.--dir=<dir>вибирає каталог відносно каталогу пісочниці, наприкладthemes/my-theme. Типово використовується каталог, збережений командою--git, а якщо його немає — увесь каталог пісочниці.- Типове значення
--message—Update from Rudel sandbox.
З PHP команда Rudel::push( $id, $remote_url, $message, $subdir ) виконує те саме й запускає хуки rudel_*_environment_push.
Автор коміту
Якщо в конфігурації Git клону немає user.name або user.email, Rudel записує значення Rudel і rudel@localhost. Щоб використовувати інші значення, задайте RUDEL_GIT_AUTHOR_NAME та RUDEL_GIT_AUTHOR_EMAIL у wp-config.php.