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
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.--themeskal 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:
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
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.--messagehar som standard værdienUpdate 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.