2011-10-18 23 views
119

Komut dosyalarımda genellikle kendi kopyalarına sahip olan kütüphaneleri (mayın ya da başkalarının) kullanırım. Repo'mdakileri çoğaltmak istemiyorum ve yeni bir sürüm çıktığında bunları güncellemem gerekiyor. Bununla birlikte, bir kişi repoyu klonladığında, hala yerel olarak çalışmalı ve bozuk bağlantıları olmamalıdır.Bağlantılı bağımlılıkları git repo'ya nasıl bağlarım?

Ne yapabilirim hakkında bir fikrim var mı?

cevap

168

Bunu alt modüller içinde git ile yapabilirsiniz. senin depo olarak yapın: Kütüphanenin deposu git://github.com/example/some_lib.git bir URL vardı ve projenizde lib/some_lib adresten isterse

git submodule add path_to_repo path_where_you_want_it 

Yani girmeniz gerekir:

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

Not bu ihtiyaçlar Deponuzdaki en üst düzey dizinden yapılacaktır. İlk önce koyduğunuz dizine cd yazmayın. Eğer alt modülü eklemek veya birisi depo taze ödeme yaptığında, yapmanız gerekir sonra

:

git submodule init 
git submodule update 

Ve aynı dışarı kontrol edilecektir ekledik sonra tüm altmodüller

sahip olduğunuz revizyon.

Eğer altmodülün içine kitaplıkların birinden cd ve çekme daha yeni bir sürüme güncellemek istiyor

: Bir git status yaptığınızda

Sonra
cd lib/some_lib 
git pull 

, değiştirilmiş bölümünde listelenen lib/somelib görmelisiniz. Bu dosyayı ekle, taahhüt ve güncelsiniz. Bir ortak çalışan, bu işlemi havuzlarına çektiğinde, git submodule update'u yeniden çalıştırana kadar lib/somelib'u değiştirilmiş olarak görür.

+2

Cevabınız için teşekkür ederiz, upvoted! (ve muhtemelen yarın kabul edecek) Diğer repodan sadece bir dosya eklemek için bir bağımlılık var mı? Yoksa bütün bir klasör olmalı mı? –

+2

Eğer bunu bir alt modül olarak izlemek istiyorsanız (ve böylece güncellemeleri kolayca alabileceğiniz için) tüm depoyu çekmeniz gerekecektir. Diğer birçok VCS'den farklı olarak git gerçekten sadece en üst düzey depo ile uğraşmak istiyor. – Emily

+3

[bunu okuyunuz] (https://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/) bir alt modulun ne işe yaradığını ve çözüm yollarını öğrenmek için potansiyel sorunlar. ve [bunun hakkında bir tartışma] (https://news.ycombinator.com/item?id=3904932). – minghua

İlgili konular