Ketergantungan Proyek Git pada GitHub

14

Saya telah menulis kerangka kerja PHP dan CMS di atas kerangka kerja. CMS tergantung pada framework, tetapi framework tersebut ada sebagai folder mandiri dalam file CMS. Saya ingin mempertahankannya sebagai proyek terpisah di GitHub, tetapi saya tidak ingin memiliki kekacauan memperbarui proyek CMS setiap kali saya memperbarui kerangka kerja. Idealnya, saya ingin agar CMS entah bagaimana menarik file kerangka kerja untuk dimasukkan ke dalam sub-direktori yang telah ditentukan daripada secara fisik melakukan file-file itu.

Apakah ini mungkin dengan Git / GitHub? Jika demikian, apa yang perlu saya ketahui untuk membuatnya berfungsi? Perlu diingat bahwa saya berada pada tingkat pengalaman yang sangat, sangat mendasar dengan Git - Saya dapat membuat repositori dan berkomitmen menggunakan plugin Git untuk Eclipse, terhubung ke GitHub, dan hanya itu. Saat ini saya sedang mengerjakan proyek solo, jadi saya belum harus belajar lebih banyak tentang Git sejauh ini, tapi saya ingin membukanya untuk orang lain di masa depan dan saya ingin memastikan saya sudah benar.

Juga, bagaimana seharusnya alur kerja ideal saya untuk proyek-proyek dengan dependensi? Setiap tips tentang hal itu juga akan sangat dihargai. Jika Anda memerlukan info lebih lanjut tentang pengaturan saya, tanyakan di komentar.

VirtuosiMedia
sumber
Lihatlah subtitle
Nick

Jawaban:

11

Pertama, jika Anda benar-benar ingin menggunakan git untuk ini, maka pertimbangkan untuk menggunakan fungsi Submodule -nya :

Dukungan submisi Git memungkinkan repositori berisi, sebagai subdirektori, checkout dari proyek eksternal. Submodules mempertahankan identitas mereka sendiri; dukungan submodule hanya menyimpan lokasi repositori submodule dan melakukan ID, sehingga pengembang lain yang mengkloning proyek yang mengandung ("superproject") dapat dengan mudah mengkloning semua submodul pada revisi yang sama. Pemeriksaan sebagian proyek super mungkin dilakukan: Anda dapat meminta Git untuk tidak mengkloning, sebagian atau semua submodul.

Halaman tertaut berisi diskusi terperinci termasuk contoh bagaimana menggunakannya dengan tepat.

Yang mengatakan, saya akan merekomendasikan untuk tidak menggunakan sistem kontrol versi Anda untuk manajemen ketergantungan dan mulai menggunakan alat build yang dapat menangani hal-hal ini untuk Anda, seperti Maven atau Ant . Bahkan ada alat membangun khusus PHP dalam pengembangan yang disebut Phing , tapi saya belum menggunakannya sendiri. Itu disebutkan dalam artikel yang membahas pertanyaan Anda: Kontrol Versi! = Manajemen Ketergantungan .

Alasan membangun alat mungkin lebih cocok dalam jangka panjang adalah karena mereka sering juga mendukung berbagai jenis repositori, perpustakaan eksternal (dan lokasi yang berbeda) dan pemeriksaan ekstensif. Namun jika Anda hanya ingin mengintegrasikan kedua pustaka ini dan tidak ingin ada kerumitan tambahan, pendekatan submodule mungkin cukup.

Deckard
sumber
+1 - Terima kasih Deckard. Saya pikir Git memiliki sesuatu seperti Submodules, saya hanya tidak tahu apa namanya. Saya pasti akan melihat Phing. Saya menginginkan alat bantu PHP build yang mengelola dependensi, menjalankan tes unit, dan kemudian menyebar ke situs saya. Sepertinya Phing mungkin bisa melakukan semua itu. Sepertinya perlu waktu untuk belajar. Apakah Anda tahu ada screencasts yang baik untuk Phing (Google tidak baik dalam hal itu)?
VirtuosiMedia
Tautan ke "fungsionalitas Submodule" rusak, dan tautan ke "Kontrol Versi! = Ketergantungan Manajemen" juga rusak
Ferrybig
6

Git Submodules adalah cara hebat untuk mengelola dependensi proyek git.

Jika Anda mencari pendekatan lain:

Komposer dapat melakukan ini semua untuk Anda. Komposer adalah manajer ketergantungan untuk php. Sintaksnya dari json. Ini agak mudah dan murah untuk digunakan.

Lebih lanjut tentang komposer:

Komposer adalah alat untuk manajemen ketergantungan dalam PHP. Ini memungkinkan Anda untuk mendeklarasikan pustaka dependen yang dibutuhkan proyek Anda dan itu akan menginstalnya di proyek Anda untuk Anda.

Pada halaman dokumentasi , Anda dapat menemukan contoh bagaimana file composer.json Anda akan dibangun:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

Setelah Anda memiliki file composer.json dan composer.lock Anda dibuat untuk proyek Anda, Anda dapat menginstal dependansi dengan mudah:

composer.phar install atau memperbaruinya: composer.phar update atau membuat proyek tertentu dari pembuat paket : composer.phar create-project acmeproject

chrisjlee
sumber
1

Baru-baru ini saya mulai menggunakan alat yang disebut Pundle untuk mengelola Ketergantungan Proyek saya. Ini mendukung Versi PHP, Paket PEAR, Repositori Git dan Repositori SVN sebagai Dependensi dan memungkinkan untuk dengan mudah menentukannya melalui "Pundlefile".

Anda juga harus mengonfigurasi Ketergantungan Anda sehingga checkout Git / SVN dimasukkan ke dalam direktori yang tidak berada di bawah Kontrol Versi (mis. "Vendor") sehingga Anda memiliki awal yang baru di setiap checkout dan untuk menjaga agar repositori Proyek Anda tetap ramping.

chh
sumber