Git
Rudel выполняет операции Git с поддержкой PHP через 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. В текущем выпуске песочница ее не предоставляет (issue #11):
- Песочница предоставляет тему, выбранную с помощью
--theme, либо активную тему хоста, скопированную с хоста при создании песочницы.--themeдолжно указывать на тему, установленную на хосте, поэтому рабочая копия предоставляется только в том случае, если имя репозитория совпадает с этим ярлыком и клонирование записывает файлы в скопированный каталог темы. - Плагины всегда загружаются из каталога плагинов хоста, поэтому рабочая копия
--type=pluginникогда не запускается.
Связанные рабочие копии
При клонировании песочницы, каталог темы которой является репозиторием Git, Rudel создает для новой песочницы связанную рабочую копию вместо копирования файлов:
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Рабочая копия находится на ветке rudel/{new-id}. Rudel записывает ее в метаданные новой песочницы под явным именем рабочей копии, составленным на основе идентификатора песочницы, типа содержимого и ярлыка темы, поэтому песочницы с одинаковым ярлыком темы не конфликтуют. При удалении песочницы рабочая копия удаляется, а ее ветка удаляется.
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.