Ketika seseorang menulis proyek open-source dan menggunakan Google Code atau GitHub, dan ingin menggunakan perpustakaan seperti Lua, bagaimana cara melakukannya?
- Haruskah ketergantungan dimasukkan dalam repositori?
- Haruskah ketergantungan dibangun dari dalam skrip build yang sama dengan sisa proyek, atau dari skrip build terpisah?
Mengingat bahwa perpustakaan tidak perlu instalasi sebelum kompilasi.
open-source
version-control
dependencies
sayap kanan
sumber
sumber
Saya pikir dependensi harus selalu dimasukkan dalam repositori selama termasuk mereka tidak melanggar ketentuan penggunaan. Beberapa hal lebih menyebalkan daripada harus menemukan versi yang tepat dari dependensi yang tepat secara manual sebelum Anda bisa membuatnya. Tentu, ini mudah ketika Anda memiliki alat otomatis untuk melakukan ini untuk Anda, yang dapat menemukan dan mengunduh dependensi yang tepat, tetapi bagaimana jika Anda tidak terhubung ke web saat ini atau server sedang down atau proyek dependensi telah sepenuhnya dihentikan dan dimatikan? Selalu sertakan dependensi jika memungkinkan.
Kecuali ada alasan bagus untuk mengkompilasi dari sumber, gunakan versi yang sudah dikompilasi.
Dan mengapa tidak memberikan opsi dalam skrip build? Peralihan sederhana untuk memilih apakah dependensi juga harus dikompilasi atau tidak. Jika pengguna memilih untuk mengkompilasi dependensi juga, maka cukup panggil skrip build mereka sendiri dari skrip build produk Anda. Jadi pengguna dapat menjalankan skrip build dependcies secara manual atau memilih untuk membuat build lengkap dari segalanya. Tapi saya hanya akan memberikan dependensi sebagai binari jika tidak ada alasan yang baik untuk mengkompilasi mereka dari sumber. Saya pikir di dunia Open Source, beberapa lisensi mengharuskan Anda untuk mendistribusikan sumber bersama dengan produk Anda, tetapi itu tidak berarti Anda tidak dapat mengkompilasinya.
Singkatnya: Berikan paket kerja mandiri yang utuh jika memungkinkan. Ini akan memberikan kenyamanan paling bagi pengguna Anda.
sumber
Ini mungkin atau mungkin tidak berlaku untuk use case Anda, tetapi apa yang kami lakukan di tempat kerja adalah menyertakan folder "Referensi" di setiap cabang. Kami menempatkan DLL pihak ke-3 di sini. Ini menyebabkan banyak duplikasi biner yang relatif tidak berubah dalam kontrol sumber, tetapi penyimpanannya murah dan pada setiap titik setiap tag & cabang memiliki dependensi yang tepat (dan versi!) Yang diharapkan.
Kami melakukan pre-kompilasi dependensi sendiri dan memindahkan binari yang dikompilasi ke folder itu. Pustaka bersama in-house kami sendiri diperlakukan dengan cara ini juga. Dengan cara itu, teknik yang sama berfungsi untuk pustaka berpemilik yang dikompilasi sebelumnya, pustaka sumber terbuka, dan pustaka in-house.
Sejauh menjawab pertanyaan Anda sekarang setelah saya membacanya kembali, lakukan hal yang sama, dan sebutkan saja proyek Anda menggunakan versi 1.3.5 Lua yang telah dikompilasi.
sumber
Ia dapat dirujuk dalam repositori (dengan cara apa pun yang dapat digunakan untuk metode SCM), jika dependensi ini merupakan bagian integral dari produk (ketergantungan-sumber), bukan ketergantungan-biner, yang dapat diselesaikan secara terpisah.
Tidak masalah sama sekali. Anda dapat memilih metode apa pun, sesuai dengan kebutuhan Anda (kecepatan / transparansi / pengelolaan / dll)
sumber
Menjadi toko Eclipse, kami baru saja mulai menggunakan Buckminster untuk mengelola proses build / assemble / deploy kami.
Tahap pertama kami adalah mencabut semua perpustakaan kami yang ada dan membiarkan buckminster mengurus mewujudkan yang benar. Ini membuat penyebaran menjadi lebih cepat dan lebih kecil.
Langkah selanjutnya adalah memindahkan
svn
repositori monolitik ke serangkaiangit
repositori modular .Saya tidak tahu seberapa baik buckminster akan diintegrasikan dengan
git
submodul (atau subrepo lincah dalam hal ini), tetapi bagus bahwa buckminster agnostik sehubungan dengan VCS yang digunakan untuk komponen tertentu.sumber