Git
Rudel menggunakan operasi PHP bawaan Git melalui Pitmaster. Tidak memerlukan biner host git. Remote diakses melalui HTTP(S) atau SSH.
Setiap sandbox memiliki satu nama cabang, rudel/{sandbox-id}, yang digunakan oleh semua alur kerja Git di bawah ini.
Kloning remote ke sandbox baru
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
Rudel membuat sandbox, mengkloning remote ke themes/my-theme di dalam direktori sandbox (nama direktori adalah nama repositori), membuat cabang rudel/{id} dari cabang default, lalu melakukan checkout. Dengan --type=plugin, checkout diarahkan ke plugins/my-theme. Remote, direktori, dan cabang dasar disimpan di sandbox untuk push berikutnya. Jika kloning gagal, sandbox tetap ada dan perintah menampilkan peringatan.
Checkout ini adalah salinan kerja untuk wp rudel push. Pada rilis saat ini, sandbox tidak menyajikannya (masalah #11):
- Sandbox menyajikan tema yang dipilih dengan
--theme, atau tema aktif host, yang disalin dari host saat sandbox dibuat.--themeharus merujuk ke tema yang terpasang di host, jadi checkout hanya disajikan jika nama repositori cocok dengan slug tema tersebut dan kloning kemudian menulis ke direktori tema yang disalin. - Plugin selalu dimuat dari direktori plugin host, jadi checkout
--type=plugintidak pernah dijalankan.
Worktree tertaut
Saat Anda mengkloning sandbox yang direktori temanya merupakan repositori Git, Rudel membuat worktree tertaut untuk sandbox baru alih-alih menyalin file:
wp rudel create --name=feature-y --clone-from=feature-x-3be7
Worktree berada di cabang rudel/{new-id}. Rudel mencatatnya dalam metadata sandbox baru dengan nama worktree eksplisit berdasarkan ID sandbox, jenis konten, dan slug tema, sehingga dua sandbox yang menggunakan slug tema sama tidak bertabrakan. Menghancurkan sandbox akan menghapus worktree dan cabangnya.
wp rudel cleanup --merged hanya mempertimbangkan worktree tertaut ini. Lihat Pembersihan.
Push perubahan
wp rudel push feature-x-3be7 --message="Update checkout template"
push melakukan commit atas setiap perubahan di checkout dan mendorong cabang rudel/{id} ke origin. Perintah ini mengembalikan No changes to push. jika tidak ada perubahan.
--git=<remote>menetapkan remote jika belum tersimpan; setelah push pertama berhasil, remote tersebut akan diingat.--dir=<dir>memilih direktori relatif terhadap direktori sandbox, misalnyathemes/my-theme. Default-nya adalah direktori yang disimpan oleh--git, atau seluruh direktori sandbox jika tidak ada.--messagedefault-nya adalahUpdate from Rudel sandbox.
Dari PHP, Rudel::push( $id, $remote_url, $message, $subdir ) melakukan hal yang sama dan menjalankan hook rudel_*_environment_push.
Identitas commit
Jika checkout tidak memiliki user.name atau user.email di konfigurasi Git, Rudel menulis Rudel dan rudel@localhost. Tetapkan RUDEL_GIT_AUTHOR_NAME dan RUDEL_GIT_AUTHOR_EMAIL di wp-config.php untuk menggunakan nilai lain.