Gå til indhold

Git

Rudel bruger PHP-baserede Git-handlinger via Pitmaster. Den kræver ikke værtens git-binærfil. Fjernlagre tilgås via HTTP(S) eller SSH.

Hver sandkasse har ét grennavn, rudel/{sandbox-id}, som bruges i alle Git-arbejdsgangene nedenfor.

Klon et fjernlager til en ny sandkasse

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

Rudel opretter sandkassen, kloner fjernlageret til themes/my-theme i sandkassemappen (mappens navn er repositoryets navn), opretter grenen rudel/{id} fra standardgrenen og checker den ud. Med --type=plugin placeres checkout i plugins/my-theme i stedet. Fjernlageret, mappen og basisgrenen gemmes på sandkassen til senere pushes. Hvis kloningen mislykkes, bevares sandkassen, og kommandoen viser en advarsel.

Checkouten er en arbejdskopi til wp rudel push. I den aktuelle version viser sandkassen den ikke (issue #11):

  • Sandkassen viser temaet, der er valgt med --theme, eller værtens aktive tema, kopieret fra værten, da sandkassen blev oprettet. --theme skal angive et tema, der er installeret på værten, så en checkout kun vises, når repositoryets navn svarer til dette slug, og kloningen derefter skriver til den kopierede temamappe.
  • Plugins indlæses altid fra værtens pluginmappe, så en --type=plugin-checkout køres aldrig.

Tilknyttede worktrees

Når du kloner en sandkasse, hvis temamappe er et Git-repository, opretter Rudel et tilknyttet worktree til den nye sandkasse i stedet for at kopiere filer:

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

Worktree'et er på grenen rudel/{new-id}. Rudel registrerer det i den nye sandkasses metadata under et eksplicit worktree-navn baseret på sandkasse-ID, indholdstype og temaslug, så to sandkasser med samme temaslug ikke kolliderer. Når sandkassen slettes, fjernes worktree'et, og dens gren slettes.

wp rudel cleanup --merged tager kun disse tilknyttede worktrees i betragtning. Se Oprydning.

Push ændringer

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

push committer alle ændringer i checkouten og pusher grenen rudel/{id} til origin. Den returnerer No changes to push., hvis intet er ændret.

  • --git=<remote> angiver fjernlageret, hvis intet er gemt; efter det første vellykkede push huskes det.
  • --dir=<dir> vælger mappen i forhold til sandkassemappen, f.eks. themes/my-theme. Som standard bruges mappen, der er gemt af --git, eller hele sandkassemappen, hvis ingen er gemt.
  • --message har som standard værdien Update from Rudel sandbox.

Fra PHP gør Rudel::push( $id, $remote_url, $message, $subdir ) det samme og udløser hooks for rudel_*_environment_push.

Commit-identitet

Hvis checkouten ikke har user.name eller user.email i sin Git-konfiguration, skriver Rudel Rudel og rudel@localhost. Definer RUDEL_GIT_AUTHOR_NAME og RUDEL_GIT_AUTHOR_EMAIL i wp-config.php for at bruge andre værdier.