.gitignore
Sözdizimini daha net anlamaya çalışıyorum ve özellikle de https://github.com/github/gitignore gitignores söz konusu olduğunda.
Baştaki eğik çizginin yalnızca .gitignore
dosyanın konumuna göre yol adlarını eşleştirmek için kullanıldığını görüyorum ( http://git-scm.com/docs/gitignore adresinden ):
Baştaki eğik çizgi, yol adının başlangıcıyla eşleşir. Örneğin, "/*.c", "cat-file.c" ile eşleşir ancak "mozilla-sha1 / sha1.c" ile eşleşmez.
Peki baştaki eğik çizgiyi kaldırdığımda ne olur? Anladığım kadarıyla iki durum var:
- Kalıp bir bölü çizgisi içermiyorsa (veya sadece sonda bir bölü çizgisi içeriyorsa, yani bir dizinle eşleşmesi gerektiği anlamına gelir), arama tüm dizin ağacının içinde gerçekleştirilir. Örneğin, desen
dir/
maç olacak<root>/dir
,<root>/a/dir
,<root>/a/b/c/.../dir
vb nerede<root>
konumudur.gitignore
dosyası. - Desen sondaki konumda olmayan bir eğik çizgi içeriyorsa (bu son karakter değilse), o zaman sadece
.gitignore
dosya konumuna göre yol adlarıyla eşleştirilir .
Bu davranışı kontrol etmek için yaptığım örnekler şunlar:
# Directory structure:
<root>
├─ dir/
│ └─ test
├─ src/
│ ├─ dir/
│ │ └─ test
test file is there only because Git does not track empty directories.
İlk test:
# .gitignore
dir/
# git status
nothing to commit
Yani Git her iki dir
dizini de görmezden geliyor . Bu, 1 numaralı durumla tutarlıdır: örüntüde eğik çizgi yoktur (sondaki hariç), bu nedenle Git, kalıpla eşleşen her şeyi görmezden gelerek tüm dizin ağacını izliyor.
İkinci test:
# .gitignore
/dir/
# git status
Untracked files:
src/
Burada Git, dir
desendeki baştaki eğik çizgi sayesinde yalnızca doğrudan kök dizinin altındaki dizini görmezden geliyor .
Üçüncü test:
# .gitignore
dir/*
# git status
Untracked files:
src/
Bu, 2 numaralı durumla tutarlıdır: örüntü içinde bir miktar eğik çizgi vardır, bu nedenle kök dizinden başlayan bir yol adı olarak kabul edilir.
Şimdi gerçek soru zamanı. Şu gitignore dosyasını ele alalım : downloader/
örneğin, dizini yok saydıklarında , aslında downloader
tüm dizin ağacında bulunan her bir dizini görmezden gelmiyorlar mı? Git'in işleyişiyle ilgili daha önce gördüğümden beri düşünmeye itildiğim şey bu.
Öyleyse, downloader
içinde bir dizin bulunan özel bir modülüm olursa, Magento'nun kökündeki normal modülün yanı sıra beklenmedik bir şekilde yok sayılacak mı? Bu biraz retorik bir soru çünkü aslında zaten başıma geldi ve bulunması gerçekten zor bir hata yarattı.
Yani, Magento .gitignore
dosyasında (sadece bir örnek olarak bahsediyorum, btw) birçok desen eğik çizgi içerir, bu nedenle bunlar kökten başlayarak yol adlarıyla doğru bir şekilde eşleşir, ancak birkaç durum vardır, bunun gibi downloader/
veya errors/
bunun gibi yanılmıyorsam eğer, potansiyel olarak tehlikeli olan ve hangi muhtemelen şekilde değiştirilmelidir /downloader/
ve /errors/
.
Daha genel bir soru olarak, açıkça kökten başlayan bir yol adı seçmek istediğimde ve eğik çizgi içeren desenler için kullanmak istemediğimde (sondaki hariç) eğik çizgi içermeyen desenler için her zaman baştaki eğik çizgiyi kullanmalı mıyım, yoksa bunu yapmalı mıyım? netlik için her zaman baştaki eğik çizgiyi kullanın? Bu konu hakkında ne düşünüyorsun?
Okuduğunuz için teşekkürler ve uzun gönderi için özür dilerim.