Перейти к содержимому

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.