Treci la conținut

Git

Rudel folosește operațiuni PHP native Git prin Pitmaster. Nu necesită binarul gazdă git. Remoturile sunt accesate prin HTTP(S) sau SSH.

Fiecare sandbox are un singur nume de ramură, rudel/{sandbox-id}, folosit de toate fluxurile de lucru Git de mai jos.

Clonați un remote într-un sandbox nou

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

Rudel creează sandboxul, clonează remote-ul în themes/my-theme din directorul sandboxului (numele directorului este numele depozitului), creează ramura rudel/{id} pornind de la ramura implicită și o descarcă. Cu --type=plugin, checkout-ul se face în plugins/my-theme. Remote-ul, directorul și ramura de bază sunt salvate în sandbox pentru push-uri ulterioare. Dacă clonarea eșuează, sandboxul este păstrat, iar comanda afișează un avertisment.

Checkout-ul este o copie de lucru pentru wp rudel push. În versiunea actuală, sandboxul nu o servește (issue #11):

  • Sandboxul servește tema aleasă cu --theme sau tema activă a gazdei, copiată de pe gazdă la crearea sandboxului. --theme trebuie să indice o temă instalată pe gazdă, așadar un checkout este servit numai când numele depozitului corespunde acelui slug, iar clonarea scrie apoi în directorul copiat al temei.
  • Pluginurile se încarcă întotdeauna din directorul de pluginuri al gazdei, astfel că un checkout --type=plugin nu rulează niciodată.

Arbori de lucru asociați

Când clonați un sandbox al cărui director de temă este un depozit Git, Rudel creează un arbore de lucru asociat pentru noul sandbox, în loc să copieze fișierele:

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

Arborele de lucru folosește ramura rudel/{new-id}. Rudel îl înregistrează în metadatele noului sandbox sub un nume explicit de arbore de lucru, bazat pe ID-ul sandboxului, tipul de conținut și slugul temei, astfel încât două sandboxuri care folosesc același slug de temă să nu intre în conflict. La distrugerea sandboxului, arborele de lucru este eliminat, iar ramura sa este ștearsă.

wp rudel cleanup --merged ia în considerare numai acești arbori de lucru asociați. Consultați Cleanup.

Împingeți modificările

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

push creează commit pentru fiecare modificare din checkout și împinge ramura rudel/{id} către origin. Returnează No changes to push. când nu există modificări.

  • --git=<remote> setează remote-ul când nu este salvat niciunul; după primul push reușit, acesta este memorat.
  • --dir=<dir> selectează directorul relativ la directorul sandboxului, de exemplu themes/my-theme. Valoarea implicită este directorul salvat de --git sau, în lipsa acestuia, întregul director al sandboxului.
  • --message are valoarea implicită Update from Rudel sandbox.

Din PHP, Rudel::push( $id, $remote_url, $message, $subdir ) face același lucru și declanșează hook-urile rudel_*_environment_push.

Identitatea commit-ului

Dacă în configurația Git a checkout-ului lipsesc user.name sau user.email, Rudel setează Rudel și rudel@localhost. Definiți RUDEL_GIT_AUTHOR_NAME și RUDEL_GIT_AUTHOR_EMAIL în wp-config.php pentru a folosi alte valori.