Evolusi projek ini mencerminkan banyak perjalanan pembangunan perisian: bermula mudah, kemudian menyesuaikan diri dengan kerumitan yang semakin meningkat. Pada mulanya aplikasi besar, monolitik dalam repositori tunggal, ia berkembang melalui pelbagai peringkat refactoring seni bina dan pengurusan repositori.
Projek Leoloso/Pop bermula sebagai tapak WordPress, menggabungkan tema dan plugin dalam repositori tunggal. Ini menawarkan kemudahan pembangunan awal, tetapi dengan cepat menjadi sukar dikawal kerana lebih banyak laman web dengan ciri -ciri serupa telah ditambah. Repo berkembang untuk merangkumi kira -kira sepuluh tapak, mewujudkan mimpi buruk penyelenggaraan. Mencari dan menggantikan rentetan di beberapa tapak terbukti sangat tidak cekap.
Untuk menangani isu -isu skalabilitas, permohonan itu telah diubahsuai ke dalam pakej PHP bebas yang diuruskan oleh komposer. Ini memerlukan peralihan kepada struktur berbilang repositori, satu repositori setiap pakej. Semasa mempromosikan kebolehgunaan semula kod dan seni bina yang lebih baik, menguruskan lebih daripada 200 repositori menjadi sangat membebankan. Versioning kebergantungan dan penyelarasan permintaan tarik merentasi pelbagai repositori terbukti sangat kompleks. Kekurangan sistem pengurusan berpusat menghalang pembangunan yang cekap.
Penyelesaiannya adalah monorepo -repositori tunggal yang menganjurkan semua pakej. Kawalan versi yang diperkemas ini, yang membolehkan siaran serentak dan permintaan tarik mudah. Walau bagaimanapun, sejak Packagist memerlukan repositori individu untuk penerbitan pakej, pendekatan dua arah telah diterima pakai: monorepo untuk pembangunan dan repositori berasingan untuk diedarkan. Ini memerlukan proses untuk "memecah" monorepo, yang dikendalikan menggunakan alat Monorepo Builder. Tahap ini meningkatkan kelajuan pembangunan dengan ketara, terutamanya semasa refactoring. Keupayaan untuk melepaskan pelbagai plugin WordPress secara serentak melalui aliran kerja GitHub yang disesuaikan dengan kecekapan yang lebih tinggi.
Walaupun kelebihannya, Monorepo membentangkan batasan: menguatkuasakan satu lesen tunggal di semua pakej, menguruskan lembaga terbitan besar, dan versi bebas pakej walaupun tanpa perubahan kod.
Keperluan untuk menguruskan kedua-dua kod awam dan swasta membawa kepada penggunaan seni bina berbilang monorepo. Monorepo awam (Leoloso/Pop) berfungsi sebagai repositori hulu, sementara monorepo swasta (Leoloso/graphqlapi-pro) bertindak sebagai repositori hiliran, menggabungkan monorepo awam sebagai submodule git. Ini membolehkan repositori swasta untuk mengakses dan memperluaskan asas kod awam, membolehkan penjanaan versi plugin awam dan swasta menggunakan aliran kerja yang disesuaikan.
Walau bagaimanapun, pendekatan ini memperkenalkan kerumitan. Repositori hiliran perlu secara eksplisit memeriksa submodul, yang memerlukan pengurusan aliran kerja yang teliti dan berpotensi memecahkan perubahan dalam repositori hulu. Ini memerlukan semakan dan komunikasi kod yang teliti untuk mengelakkan akibat yang tidak diingini.
Evolusi struktur repositori projek ini menyoroti kepentingan menyesuaikan diri dengan perubahan keperluan. Setiap peringkat menawarkan kelebihan dan kekurangan, akhirnya membawa kepada persediaan multi-monorepo yang kini memenuhi keperluan projek. Walau bagaimanapun, keperluan masa depan mungkin memerlukan lelaran lanjut dalam strategi pengurusan repositori. Pendekatan "terbaik" tetap bergantung kepada konteks, menekankan sifat berulang pembangunan perisian dan pengurusan repositori.
Atas ialah kandungan terperinci Dari repo tunggal, ke multi-repos, hingga monorepo, hingga multi-monorepo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!