Şu anda olmayan bir alt modül eklerseniz, .git/config
'a alt modül bilgisi eklenmez. Şu anda bir altmodülün olarak var olan bir repo eklersenizSubmodule olarak varolan bir repo eklemek neden .git/config?
$ mkdir testing
$ cd testing
$ git init
$ git submodule add [email protected]:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
Ancak, url .git/config
eklenir:
git submodule add
olurdu farz olurdu
sadece .gitmodules
modifiye
$ mkdir testing
$ cd testing
$ git init
$ git clone [email protected]:submodule.git
$ git submodule add [email protected]:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[submodule "submodule"]
url = [email protected]:submodule.git
ve bu
git submodule init
projenin
.git/config
güncelleştirdi.
Neden ikinci durumda değil .git/config
değiştirilmiş, ancak ilk değil mi? Birisi bu davranış için rasyonel açıklayabilir mi?
Mark işaretçi için teşekkürler sabit olduğunu (en azından bu davranışı kasıtlı olduğunu göstermektedir) tamamlama. Ancak, "alt modül güncellenene kadar klonlanmamış" dediğinizde hala kafam karıştı. Yukarıdaki ilk durumda, 'git submodule [email protected] adresini ekleyin: submodule.git 'aslında süper-projeye submodule.git' klonlar. Yukarıdaki örneklerde, çalıştırdığım tek alt mod komutu 'git submodule add 'idi ve her iki durumda da süper projemde klonlanmış bir submodule.git ile bitti. Tek fark, '.git/config'un sonradan göründüğü, ve # 1'in de kayıt yaptırmak için git altmodule init'ine ihtiyaç duymasıdır. – cdwilson
Bu davranış, ilk durumda 'git submodule add' alt modülü kaydedilinceye (' git submodule init ') ve güncellenen ('git submodule update') depoyu klonlamadıysa, benim için anlamlı olur. Ancak, yukarıdaki # 1 örneğinin aslında "submodule.git" klonlaması yapması ve 'git submodule init 'dosyasını kaydettirmesini gerektirmesi durumunda, # 2'nin' git submodule init' gerektirip de kayıt işlemini gerçekleştirmesini beklerim. Eminim ki burada eksik olan bir şey var, ama şu anda neden bir tutarsızlık olduğunu anlamıyorum. – cdwilson
@cdwilson: İyi bir nokta, soruyu cevaplamak için acele etmemde 'git submodule add' davranışını yanlış hatırlatıyordum. Cevabımı düzeltirim. Bunun için uygun bir cevap almak için git e-posta listesinde bunu sorabilirsiniz - bunun bir hata olduğunu sanıyorum, ama belki de bir şeyleri özlüyorum. –