Selama berbulan-bulan saya telah mencoba merencanakan struktur proyek yang baik untuk menggunakan kontrol versi git untuk pengembangan situs WordPress yang tidak mengorbankan kemampuan untuk memperbarui inti dan plugin melalui dashboard WP, tidak memerlukan struktur direktori yang tidak konvensional (wp -content di luar folder induk WP) dan itu mudah untuk mengelola dan menggunakan seluruh situs web. Saya sudah membaca tentang submodula, subtree, repositori bersarang, dll, dan saya masih mengalami kesulitan untuk menyatukan semuanya dan memilih strategi yang tepat.
Inilah yang saya pikirkan saat ini, dengan pemikiran saya tentang bagaimana saya akan menangani repositori git dalam tanda kurung.
root (main project repo)
|-- wordpress (public git repo added as subtree)
| |-- wp-content
| | |-- plugins
| | | |-- my-custom-plugin (git repo added as subtree)
| | | |-- other-plugin-with-git-repo (git repo added as subtree)
| | | +-- other-plugin-without-git-repo (ignored/untracked)
| | |-- themes
| | | |-- my-custom-theme (git repo added as subtree)
| | | |-- other-theme-with-git-repo (git repo added as subtree)
| | | +-- other-theme-without-git-repo (ignored/untracked)
| | +-- uploads (ignored/untracked)
| |-- wp-admin
| +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt
Ini membuat saya memiliki beberapa masalah / pertanyaan;
Pembaruan otomatis; Saya suka fitur pembaruan otomatis yang baru, ini berpotensi menghemat banyak waktu dan upaya untuk menjaga situs saya tetap diperbarui dan aman, tetapi tampaknya ia sangat sulit melacak perubahan kode dengan git. Apakah ada cara untuk melacak perubahan kode saya sementara masih memungkinkan inti WordPress untuk memperbarui otomatis?
Apakah memiliki subtree di bawah repo inti WordPress mencegah saya menggunakan git untuk menggabungkan pembaruan inti baru atau mendorong perubahan saya kembali ke repo inti WordPress (jika saya pernah memutuskan saya ingin menjadi kontributor inti)?
Untuk plugin yang tidak memiliki repo git publik, mengabaikannya sama sekali akan menimbulkan masalah karena tidak dapat dengan cepat mengkloning seluruh situs pada server baru tanpa menyalin file secara manual ke server. Ini juga menyebabkan masalah jika saya ingin membuat perubahan pada kode plugin yang tidak dilacak dan bisa dengan mudah hilang dalam peningkatan plugin.
Jadi, untuk meringkas, apa itu git + WordPress setup yang baik yang menghindari masalah ini? Saya akan menghargai tanggapan Anda tentang struktur proyek yang saya usulkan. Cara apa pun yang Anda dapat membantu saya meningkatkan ini, akan sangat dihargai!
PS, jika ada forum yang lebih baik untuk diskusi ini, tunjukkan saya di sana.
sumber
install.php
rutinitas khusus atau sesuatu dan menggunakan mekanisme pembaruan normal dari sana. Tumpukan komposer dapat menangani pembaruan dengan sangat baik dalam abstrak, tetapi itu bergantung pada kualitas paket yang Anda gunakan dan hal-hal seperti proxy repositori WP resmi untuk itu belum cukup matang.Anda mungkin kita lihat ini masalah dan ini masalah.
Lihat juga file README di setiap repo juga:
Berdasarkan repo di atas, sebagai contoh lain dari pengaturan Git / WP, saya membuat ini . Saya memilih untuk menggunakan symlinks untuk tema (saya coba menutupi itu di README saya ).
Saya agak di kapal yang sama dengan pembaruan otomatis ... Rencana saya adalah untuk secara manual memperbarui submodule WP ketika pembaruan terjadi. Saya pikir alternatifnya adalah, dalam teori (saya belum menguji diri sendiri), untuk membiarkan pembaruan submodule itu sendiri untuk pembaruan kecil (ada pengaturan WP untuk ini) dan kemudian melakukan
git
kekuatan / reset submodule ketika pembaruan besar keluar ( mungkin salah satu jawaban di sini bisa membantu ... tentu saja, saya pikir, seseorang ingin menargetkan tag WP tertentu ketika memperbarui ke rilis besar berikutnya).Satu hal yang perlu diperhatikan adalah bahwa jika WP melihat
.git
di jalur, ia akan secara otomatis mematikan pembaruan otomatis. Untuk info lebih lanjut, lihat:Tautan terkait lainnya:
Mei, 2015 pembaruan
Saya membuat repo ini yang merupakan cara cepat bagi saya untuk memulai proyek WordPress. Pendekatan terbaru saya adalah hanya mengontrol versi tema. Dengan kata lain, saya menginstal WP secara lokal (menggunakan setup di repo yang disebutkan sebelumnya) dan pada produksi, kemudian saya memodifikasi file konfigurasi pada setiap sistem dan
git
menarik tema saya untuk mendapatkan situs fungsional.sumber
Jenis pengembangan ini termasuk dalam "tidak begitu mudah dan membutuhkan alur kerja kustom yang mungkin membutuhkan waktu lama untuk puas".
Saya menemukan Subtrees, submodules atau repo bersarang, rasa sakit yang hebat di pantat.
Beberapa pemikiran (melacak semuanya).
add_filter( 'auto_upgrade_ignore_checkout_status', '__return_true' );
Metode aman melalui komit manual + email:
Anda dapat menggunakan server pementasan dan notifikasi pembaruan email untuk diri sendiri, melakukan pembaruan dan mendorong ke server langsung yang dimatikan pembaruan otomatisnya.
Ini juga memungkinkan Anda untuk menyalin / menempelkan folder untuk repo Anda sendiri sesuka hati, yang sering kali saya lakukan. Ini juga membuatnya mudah untuk mengkloning / menghancurkan beberapa server staging, git benar-benar mulai berlaku dengan metode ini sejak didistribusikan.
The downside: salin / tempelkan folder, manajemen.
Metode otomatis
Siapkan skrip build (Phing, Ant, Bash, Capistrano, dll) dan beberapa kode kustom yang akan melakukan git add + commit ketika pembaruan diterapkan dan mengirimkannya ke server langsung. Anda juga dapat memisahkan plugin / tema repos dan kemudian membuat kompilasi skrip / memindahkan / apa pun itu, dan / atau menggunakan Komposer dalam campuran.
Mengotomatiskan alur kerja seperti ini juga cenderung tidak fleksibel dan hanya layak jika Anda melihat kebutuhan nyata untuk waktu yang diinvestasikan.
The downside: tidak fleksibel, butuh waktu untuk membuat.
Git tidak boleh digunakan untuk cadangan, dan secara umum tidak perlu bagi Anda untuk mengkloning sejarah komit WP.
sumber
Setelah beberapa pemikiran, karena saya pasti ingin mengambil keuntungan dari pembaruan WP asli untuk menghemat kerja keras saya, tidak masuk akal untuk melacak apa pun yang WP akan perbarui menggunakan git. Ini ide yang direvisi.
Tentu saja, maka saya kehilangan kemampuan untuk melacak plugin dan tema mana yang merupakan bagian dari proyek dari dalam VCS, tetapi saya benar-benar hanya membutuhkan itu untuk keperluan pencadangan, dan saya akan tetap menggunakan semacam sistem cadangan biasa.
Jadi, satu-satunya kekurangan yang saya inginkan adalah kemampuan untuk dengan mudah menyebarkan seluruh tumpukan ke server yang berbeda tanpa menggunakan FTP untuk menyalin semuanya secara manual. Adakah yang punya pemikiran tentang itu?
sumber
Oke, menonton pembicaraan Mark Jaquith di sini , mungkin saya berada di jalur yang salah. Inilah tikaman lain yang melacak segalanya.
Saya kira kelemahan utama dengan ini adalah memiliki direktori konten khusus, yang telah menyebabkan masalah bagi saya di masa lalu dengan plugin dan tema yang ditulis dengan buruk tidak dapat menemukan direktori konten.
sumber