Preskočiť na obsah

Git

Rudel používa operácie PHP-native Git prostredníctvom Pitmaster. Nevyžaduje binárny súbor git hostiteľa. Vzdialené repozitáre sú dostupné cez HTTP(S) alebo SSH.

Každý sandbox má jeden názov vetvy, rudel/{sandbox-id}, ktorý používajú všetky nižšie uvedené pracovné postupy Git.

Klonovanie vzdialeného repozitára do nového sandboxu

Shell
wp rudel create --name=feature-x --git=https://example.test/my-theme.git

Rudel vytvorí sandbox, naklonuje vzdialený repozitár do themes/my-theme v adresári sandboxu (názov adresára je názov repozitára), vytvorí vetvu rudel/{id} z predvolenej vetvy a prepne sa na ňu. Pomocou --type=plugin sa namiesto toho repozitár naklonuje do plugins/my-theme. Vzdialený repozitár, adresár a základná vetva sa uložia do sandboxu na neskoršie odosielanie zmien. Ak klonovanie zlyhá, sandbox sa zachová a príkaz vypíše upozornenie.

Pracovná kópia slúži na prácu s wp rudel push. V aktuálnom vydaní ju sandbox neposkytuje (problém č. 11):

  • Sandbox poskytuje tému vybranú pomocou --theme alebo aktívnu tému hostiteľa, skopírovanú z hostiteľa pri vytvorení sandboxu. --theme musí označovať tému nainštalovanú na hostiteľovi. Pracovná kópia sa teda poskytuje len vtedy, keď sa názov repozitára zhoduje s týmto slugom a klonovanie zapisuje do skopírovaného adresára témy.
  • Doplnky sa vždy načítavajú z adresára doplnkov hostiteľa, preto sa pracovná kópia --type=plugin nikdy nespustí.

Prepojené pracovné stromy

Keď klonujete sandbox, ktorého adresár témy je repozitárom Git, Rudel namiesto kopírovania súborov vytvorí pre nový sandbox prepojený pracovný strom:

Shell
wp rudel create --name=feature-y --clone-from=feature-x-3be7

Pracovný strom je na vetve rudel/{new-id}. Rudel ho zaznamená v metadátach nového sandboxu pod výslovným názvom pracovného stromu založeným na ID sandboxu, type obsahu a slugu témy, aby sa sandboxy používajúce rovnaký slug témy nedostali do konfliktu. Zničením sandboxu sa odstráni pracovný strom aj jeho vetva.

wp rudel cleanup --merged zohľadňuje iba tieto prepojené pracovné stromy. Pozrite si časť Čistenie.

Odoslanie zmien

Shell
wp rudel push feature-x-3be7 --message="Update checkout template"

push potvrdí každú zmenu v pracovnej kópii a odošle vetvu rudel/{id} do origin. Ak sa nič nezmenilo, vráti No changes to push..

  • --git=<remote> nastaví vzdialený repozitár, ak ešte nie je uložený; po prvom úspešnom odoslaní sa zapamätá.
  • --dir=<dir> vyberie adresár relatívne k adresáru sandboxu, napríklad themes/my-theme. Predvolene sa použije adresár uložený pomocou --git, inak celý adresár sandboxu.
  • --message má predvolenú hodnotu Update from Rudel sandbox.

Z PHP vykoná Rudel::push( $id, $remote_url, $message, $subdir ) to isté a spustí hooky rudel_*_environment_push.

Identita potvrdení zmien

Ak v konfigurácii Git pracovnej kópie chýba user.name alebo user.email, Rudel zapíše Rudel a rudel@localhost. Ak chcete použiť iné hodnoty, definujte RUDEL_GIT_AUTHOR_NAME a RUDEL_GIT_AUTHOR_EMAIL v wp-config.php.