Git
Rudel utilise les opérations Git natives de PHP via Pitmaster. Le binaire hôte git n’est pas requis. Les accès distants passent par HTTP(S) ou SSH.
Chaque sandbox a un seul nom de branche, rudel/{sandbox-id}, utilisé par tous les workflows Git ci-dessous.
Cloner un dépôt distant dans une nouvelle sandbox
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
Rudel crée la sandbox, clone le dépôt distant dans themes/my-theme au sein du répertoire de la sandbox (le nom du répertoire est celui du dépôt), crée la branche rudel/{id} à partir de la branche par défaut et l’active. Avec --type=plugin, le dépôt est plutôt cloné dans plugins/my-theme. Le dépôt distant, le répertoire et la branche de base sont enregistrés dans la sandbox pour les prochains envois. Si le clonage échoue, la sandbox est conservée et la commande affiche un avertissement.
La copie de travail sert à wp rudel push. Dans la version actuelle, la sandbox ne la sert pas (issue #11) :
- La sandbox sert le thème choisi avec
--theme, ou le thème actif de l’hôte, copié depuis celui-ci lors de la création de la sandbox.--themedoit désigner un thème installé sur l’hôte : une copie de travail n’est servie que si le nom du dépôt correspond à cet identifiant et que le clonage écrit ensuite dans le répertoire du thème copié. - Les extensions sont toujours chargées depuis le répertoire des extensions de l’hôte ; une copie de travail
--type=pluginne s’exécute donc jamais.
Worktrees associés
Lorsque vous clonez une sandbox dont le répertoire de thème est un dépôt Git, Rudel crée un worktree associé pour la nouvelle sandbox au lieu de copier les fichiers :
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Le worktree utilise la branche rudel/{new-id}. Rudel l’enregistre dans les métadonnées de la nouvelle sandbox sous un nom explicite basé sur l’ID de la sandbox, le type de contenu et l’identifiant du thème, afin que deux sandboxes utilisant le même identifiant de thème n’entrent pas en conflit. La destruction de la sandbox supprime le worktree et sa branche.
wp rudel cleanup --merged ne prend en compte que ces worktrees associés. Consultez Nettoyage.
Envoyer les modifications
wp rudel push feature-x-3be7 --message="Update checkout template"
push valide toutes les modifications de la copie de travail et envoie la branche rudel/{id} vers origin. La commande renvoie No changes to push. si rien n’a changé.
--git=<remote>définit le dépôt distant s’il n’y en a pas d’enregistré ; après le premier envoi réussi, il est mémorisé.--dir=<dir>choisit le répertoire relatif au répertoire de la sandbox, par exemplethemes/my-theme. Par défaut, il s’agit du répertoire enregistré par--git, ou de tout le répertoire de la sandbox.--messagevaut par défautUpdate from Rudel sandbox.
Depuis PHP, Rudel::push( $id, $remote_url, $message, $subdir ) fait de même et déclenche les hooks rudel_*_environment_push.
Identité de validation
Si la copie de travail ne contient ni user.name ni user.email dans sa configuration Git, Rudel définit Rudel et rudel@localhost. Définissez RUDEL_GIT_AUTHOR_NAME et RUDEL_GIT_AUTHOR_EMAIL dans wp-config.php pour utiliser d’autres valeurs.