Git
Rudel provádí operace PHP nativní pro Git prostřednictvím Pitmaster. Nevyžaduje binární soubor git hostitele. Ke vzdáleným repozitářům se přistupuje přes HTTP(S) nebo SSH.
Každý sandbox má jeden název větve rudel/{sandbox-id}, který používají všechny níže uvedené pracovní postupy Git.
Naklonování vzdáleného repozitáře do nového sandboxu
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
Rudel vytvoří sandbox, naklonuje vzdálený repozitář do themes/my-theme uvnitř adresáře sandboxu (název adresáře odpovídá názvu repozitáře), vytvoří větev rudel/{id} odvozenou od výchozí větve a přepne na ni. S volbou --type=plugin se checkout umístí do plugins/my-theme. Vzdálený repozitář, adresář a základní větev se uloží do sandboxu pro pozdější odesílání změn. Pokud klonování selže, sandbox zůstane zachován a příkaz zobrazí varování.
Checkout slouží jako pracovní kopie pro wp rudel push. V aktuálním vydání jej sandbox nezpřístupňuje (issue #11):
- Sandbox zpřístupňuje motiv zvolený pomocí
--theme, případně aktivní motiv hostitele, zkopírovaný z hostitele při vytvoření sandboxu.--thememusí označovat motiv nainstalovaný na hostiteli, takže checkout se použije jen tehdy, když název repozitáře odpovídá danému slug a klonování zapíše soubory do zkopírovaného adresáře motivu. - Pluginy se vždy načítají z adresáře pluginů hostitele, takže checkout
--type=pluginse nikdy nespustí.
Propojené pracovní stromy
Když klonujete sandbox, jehož adresář motivu je repozitářem Git, Rudel vytvoří pro nový sandbox propojený pracovní strom namísto kopírování souborů:
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Pracovní strom je na větvi rudel/{new-id}. Rudel ho zaznamená do metadat nového sandboxu pod výslovným názvem pracovního stromu odvozeným od ID sandboxu, typu obsahu a slugu motivu, aby se dva sandboxy se stejným slugem motivu nedostaly do konfliktu. Při zničení sandboxu se pracovní strom odstraní a jeho větev smaže.
wp rudel cleanup --merged zohledňuje pouze tyto propojené pracovní stromy. Viz Úklid.
Odeslání změn
wp rudel push feature-x-3be7 --message="Update checkout template"
push potvrdí všechny změny v checkoutu a odešle větev rudel/{id} do origin. Pokud se nic nezměnilo, vrátí No changes to push..
--git=<remote>nastaví vzdálený repozitář, pokud ještě není uložen; po prvním úspěšném odeslání se zapamatuje.--dir=<dir>vybere adresář relativně k adresáři sandboxu, napříkladthemes/my-theme. Výchozí je adresář uložený příkazem--git, případně celý adresář sandboxu.--messagemá výchozí hodnotuUpdate from Rudel sandbox.
Z PHP provede Rudel::push( $id, $remote_url, $message, $subdir ) totéž a spustí háčky rudel_*_environment_push.
Identita potvrzení změn
Pokud checkout v konfiguraci Git neobsahuje user.name ani user.email, Rudel zapíše hodnoty Rudel a rudel@localhost. Chcete-li použít jiné hodnoty, definujte v wp-config.php položky RUDEL_GIT_AUTHOR_NAME a RUDEL_GIT_AUTHOR_EMAIL.