git submodules

Merhaba sevgili yazılımperver dostlar, bu yazımda kısa bir süre önce kullanmaya başladığım (ve ihtiyaç duyduğum) bir kabiliyete yönelik bilgi vermeye çalışacağım: “git submodules”.

Mevcut bir projeniz var ve içerisinde ayrı bir git reposunu, bu repodaki projeniz ile birlikte kullanmak istiyorsunuz. Ne yapabiliriz?

Diyelim ki elinizde main projeniz var ve bunu klonladınız ve içerisinde de lib adlı ayrı bir kütüphaneyi de kullanmak istiyorsunuz, ne yapmalısınız?

demeniz yeterli

lib reposu artık, lib dizini olarak duruyor olacak projenizin içerisinde.
Kullandığınız git sürümüne bağlı olarak dizinin içerisi boş olabilir. Bu durumda aşağıdaki komutu da çağırmanız gerekmekte (yenilerde buna gerek olmayacak):

Bu adımdan sonra tepe dizinde “git status” dediğinizde yeni dizin ve .gitmodules dosyasını görüyor olacaksınız. Örneğin, uEngine4 repomu ayrı bir proje eklediğimde benim gördüğüm çıktı şu şekilde:

şimdi bu değişiklikleri commitleyelim ve github’ta nasıl görünüyor ona bakalım:

resimde gördüğünüz gibi bir bağlantı oluştu ve tıkladığınızda ilgili repoya gidebiliyorsunuz artık.

Peki gelelim bundan sonraki git kullanımına, bundan sonra kullanımlarda bulunduğunuz dizine göre davranışta bir takım değişiklikler olabilir:

Bir diğer dikkat edilmesi gerek nokta, diyelim ki yukarıdaki gibi submodule olarak repo’yu eklediniz ve sonra sıfırdan bir klonlama yaptınız, her şey gelir mi?

dir .\main\lib

dediğiniz boş bir dizin göreceksiniz. İşte submodullerde dikkat etmeniz gereken konu bu. git sizden, her içeriği indirmesi için spesifik olarak komut iletmenizi bekler, bu sebeple de ilk klonlamayı yaptıktan sonra aşağıdaki komutu da çağırmanız gerekmekte:

eğer bu işi başta yapmak isterseniz, git clone komutuna “–recursive” argümanını eklemeniz yeterli.
Submodule’ler ile çalışırken “git submodule update” ve yukarıdaki klon komutlarını kullanmayı unutmayın.

Elbette git submodule’lere yönelik her şey bunlar değil ama çalışmaya başlamak için yeterli olacağını düşünüyorum. Daha detaylı bilgi için aşağıdaki kaynaklara göz atabilirsiniz. Bir sonraki yazımda görüşmek üzere kendinize iyi bakın.

Kaynaklar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.