Přejít k obsahu

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

Shell
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. --theme musí 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=plugin se 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ů:

Shell
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

Shell
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říklad themes/my-theme. Výchozí je adresář uložený příkazem --git, případně celý adresář sandboxu.
  • --message má výchozí hodnotu Update 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.