it-swarm-id.com

Bagaimana saya bisa menautkan dependensi dalam git repo?

Dalam skrip saya, saya sering menggunakan perpustakaan (milik saya atau orang lain) yang memiliki repo sendiri. Saya tidak ingin menduplikasi yang ada di repo saya dan macet dengan memperbarui setiap kali versi baru keluar. Namun, ketika seseorang mengkloning repo, itu harus tetap bekerja secara lokal dan tidak memiliki tautan rusak.

Ada ide tentang apa yang bisa saya lakukan?

137
Lea Verou

Anda dapat melakukannya dengan submodules di git. Di repositori Anda, lakukan:

git submodule add path_to_repo path_where_you_want_it

Jadi, jika repositori perpustakaan memiliki URL git://github.com/example/some_lib.git dan Anda menginginkannya pada lib/some_lib dalam proyek Anda, Anda akan masuk:

git submodule add git://github.com/example/some_lib.git lib/some_lib

Perhatikan bahwa ini perlu dilakukan dari direktori tingkat atas di repositori Anda. Jadi jangan cd ke direktori tempat Anda meletakkannya terlebih dahulu.

Setelah Anda menambahkan submodule, atau setiap kali seseorang melakukan checkout baru dari repositori Anda, Anda harus melakukan:

git submodule init
git submodule update

Dan kemudian semua submodul yang Anda tambahkan akan diperiksa pada revisi yang sama dengan yang Anda miliki.

Ketika Anda ingin memperbarui ke versi yang lebih baru dari salah satu perpustakaan, cd ke dalam submodule dan tarik:

cd lib/some_lib
git pull

Lalu, ketika Anda melakukan git status Anda akan melihat lib/somelib tercantum di bagian yang dimodifikasi. Tambahkan file itu, komit, dan Anda terbarui. Ketika seorang kolaborator menarik komit ke dalam repositori mereka, mereka akan melihat lib/somelib telah dimodifikasi hingga dijalankan git submodule update lagi.

195
Emily