Ga naar de inhoud

Git

Rudel gebruikt PHP-native Git-bewerkingen via Pitmaster. De git-binary op de host is niet nodig. Remotes zijn bereikbaar via HTTP(S) of SSH.

Elke sandbox heeft één branchnaam, rudel/{sandbox-id}, die in elke onderstaande Git-workflow wordt gebruikt.

Een remote naar een nieuwe sandbox klonen

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

Rudel maakt de sandbox aan, kloont de remote naar themes/my-theme in de sandboxmap (de mapnaam is de repositorynaam), maakt branch rudel/{id} aan op basis van de standaardbranch en schakelt daarnaar over. Met --type=plugin wordt de checkout in plaats daarvan naar plugins/my-theme geplaatst. De remote, map en basisbranch worden op de sandbox opgeslagen voor latere pushes. Als het klonen mislukt, blijft de sandbox bestaan en geeft de opdracht een waarschuwing weer.

De checkout is een werkkopie voor wp rudel push. In de huidige release serveert de sandbox deze niet (issue #11):

  • De sandbox serveert het thema dat is gekozen met --theme, of het actieve thema van de host, dat bij het aanmaken van de sandbox vanaf de host is gekopieerd. --theme moet verwijzen naar een thema dat op de host is geïnstalleerd. Een checkout wordt dus alleen geserveerd als de repositorynaam overeenkomt met die slug en de kloon vervolgens naar de gekopieerde themamap schrijft.
  • Plugins worden altijd geladen vanuit de pluginmap van de host, dus een checkout van --type=plugin wordt nooit uitgevoerd.

Gekoppelde worktrees

Als u een sandbox kloont waarvan de themamap een Git-repository is, maakt Rudel een gekoppelde worktree voor de nieuwe sandbox aan in plaats van bestanden te kopiëren:

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

De worktree staat op branch rudel/{new-id}. Rudel registreert deze in de metadata van de nieuwe sandbox onder een expliciete worktreenaam op basis van de sandbox-ID, het inhoudstype en de themaslug, zodat twee sandboxes met dezelfde themaslug elkaar niet in de weg zitten. Als u de sandbox vernietigt, wordt de worktree verwijderd en de branch gewist.

wp rudel cleanup --merged houdt alleen rekening met deze gekoppelde worktrees. Zie Opschoning.

Wijzigingen pushen

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

push commit elke wijziging in de checkout en pusht branch rudel/{id} naar origin. De opdracht geeft No changes to push. terug als er niets is gewijzigd.

  • --git=<remote> stelt de remote in als er nog geen is opgeslagen; na de eerste geslaagde push wordt deze onthouden.
  • --dir=<dir> bepaalt de map relatief ten opzichte van de sandboxmap, bijvoorbeeld themes/my-theme. De standaard is de map die door --git is opgeslagen, of anders de volledige sandboxmap.
  • --message is standaard ingesteld op Update from Rudel sandbox.

Vanuit PHP doet Rudel::push( $id, $remote_url, $message, $subdir ) hetzelfde en activeert het de hooks rudel_*_environment_push.

Commitidentiteit

Als de checkout geen user.name of user.email in de Git-configuratie heeft, schrijft Rudel Rudel en rudel@localhost weg. Definieer RUDEL_GIT_AUTHOR_NAME en RUDEL_GIT_AUTHOR_EMAIL in wp-config.php om andere waarden te gebruiken.