Git
Rudel usa operazioni PHP native di Git tramite Pitmaster. Non richiede il binario git dell'host. I sistemi remoti sono raggiunti tramite HTTP(S) o SSH.
Ogni sandbox ha un unico nome di branch, rudel/{sandbox-id}, usato da tutti i workflow Git descritti di seguito.
Clonare un repository remoto in una nuova sandbox
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
Rudel crea la sandbox, clona il repository remoto in themes/my-theme all'interno della directory della sandbox (il nome della directory è quello del repository), crea il branch rudel/{id} dal branch predefinito e lo sposta sul checkout. Con --type=plugin, il checkout va invece in plugins/my-theme. Il repository remoto, la directory e il branch di base vengono salvati nella sandbox per i push successivi. Se la clonazione non riesce, la sandbox viene mantenuta e il comando mostra un avviso.
Il checkout è una copia di lavoro per wp rudel push. Nella versione attuale la sandbox non la serve (issue #11):
- La sandbox serve il tema scelto con
--theme, oppure il tema attivo dell'host, copiato dall'host al momento della creazione della sandbox.--themedeve indicare un tema installato sull'host; il checkout viene quindi servito solo se il nome del repository corrisponde allo slug del tema e la clonazione scrive poi nella directory del tema copiata. - I plugin vengono sempre caricati dalla directory dei plugin dell'host, quindi un checkout
--type=pluginnon viene mai eseguito.
Worktree collegati
Quando clonate una sandbox la cui directory del tema è un repository Git, Rudel crea un worktree collegato per la nuova sandbox invece di copiare i file:
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Il worktree usa il branch rudel/{new-id}. Rudel lo registra nei metadati della nuova sandbox con un nome esplicito del worktree basato sull'ID della sandbox, sul tipo di contenuto e sullo slug del tema, così due sandbox che usano lo stesso slug del tema non entrano in conflitto. L'eliminazione della sandbox rimuove il worktree ed elimina il branch.
wp rudel cleanup --merged considera solo questi worktree collegati. Consultate Pulizia.
Inviare le modifiche
wp rudel push feature-x-3be7 --message="Update checkout template"
push esegue il commit di ogni modifica nel checkout e invia il branch rudel/{id} a origin. Restituisce No changes to push. se non ci sono modifiche.
--git=<remote>imposta il repository remoto se non ne è stato salvato nessuno; dopo il primo push riuscito, viene ricordato.--dir=<dir>seleziona la directory relativa alla directory della sandbox, ad esempiothemes/my-theme. Per impostazione predefinita usa la directory salvata da--git, altrimenti l'intera directory della sandbox.--messageha valore predefinitoUpdate from Rudel sandbox.
Da PHP, Rudel::push( $id, $remote_url, $message, $subdir ) esegue la stessa operazione e attiva gli hook rudel_*_environment_push.
Identità del commit
Se la configurazione Git del checkout non contiene user.name o user.email, Rudel scrive Rudel e rudel@localhost. Definite RUDEL_GIT_AUTHOR_NAME e RUDEL_GIT_AUTHOR_EMAIL in wp-config.php per usare altri valori.