Çoğunlukla .gitattributes
dosyada * text=auto
. text=auto
O dosyadaki amaç nedir ?
Çoğunlukla .gitattributes
dosyada * text=auto
. text=auto
O dosyadaki amaç nedir ?
Yanıtlar:
Gönderen docs :
Dosyadaki
.gitattributes
(veya.git/info/attributes
) her satır şu şekildedir:pattern attr1 attr2 ...
Yani burada kalıp, *
yani tüm dosyalar anlamına gelir ve öznitelik de olur text=auto
.
Ne yapar text=auto
? Belgelerden:
Metin "otomatik" olarak ayarlandığında, yol otomatik satır sonu normalleştirme için işaretlenir. Git içeriğin metin olduğuna karar verirse, satır sonları check-in sırasında LF'ye normalleştirilir.
Etkin değilse varsayılan davranış nedir?
belirtilmemiş
Metin özniteliği belirtilmemişse Git, dosyanın dönüştürülmesi gerekip gerekmediğini belirlemek için core.autocrlf yapılandırma değişkenini kullanır.
Ne yapar core.autocrlf
? Dokümanlardan:
core.autocrlf
Bu değişkeni "true" olarak ayarlamak, metin özniteliğini tüm dosyalarda "auto" olarak ayarlamakla hemen hemen aynıdır, ancak metin dosyalarının normalleştirilmesinin garanti edilmemesi gerekir: havuzda CRLF içeren dosyalara dokunulmayacaktır. Depo normalleştirilmiş satır sonlarına sahip olmasa bile çalışma dizininizde CRLF satır sonlarına sahip olmak istiyorsanız bu ayarı kullanın. Bu değişken girdi olarak ayarlanabilir ve bu durumda çıktı dönüşümü yapılmaz.
Bunların çamur kadar açık olduğunu düşünüyorsanız, yalnız değilsiniz.
İşte ne * text=auto
benim deyişle yapar: Birisi bir dosyayı işlediğinde, Git bu dosya bir metin dosyası olup olmadığını tahmin ve eğer, tüm CR + LF bayt LF bayt değiştirilir dosyanın bir sürümünü taahhüt edecektir. Dosyaların çalışma ağacında nasıl göründüğünü doğrudan etkilemez, bir dosyayı teslim alırken LF baytlarını CR + LF baytlarına dönüştürecek başka ayarlar da vardır.
Ben ediyorum değil koyarak tavsiye * text=auto
içinde .gitattributes
dosyanın. Bunun yerine şuna benzer bir şey tavsiye ederim:
*.txt text
*.html text
*.css text
*.js text
Bu, hangi dosyaların metin dosyaları olduğunu ve nesne veritabanında CRLF'yi LF'ye dönüştüren (ancak çalışma ağacında olması gerekmez) açıkça belirtir. Bir depomuz vardı * text=auto
ve Git bir görüntü dosyası için bunun bir metin dosyası olduğunu tahmin etti ve nesne veritabanındaki CR + LF baytlarını LF baytlarıyla değiştirirken onu bozmasına neden oldu. Bu hata ayıklamak için eğlenceli değildi.
Kullanmanız gerekiyorsa * text=auto
, onu ilk satır olarak koyun .gitattributes
, böylece sonraki satırlar onu geçersiz kılabilir. Bu giderek daha popüler bir uygulama haline geliyor gibi görünüyor.
everyone
atıfta bulunuyorsanız git-scm
, bunun nedeni muhtemelen bir * nix paketi geliştirmeleridir ve bu nedenle * nix satırsonu karakterini kullanmanın normal olmasıdır .
git-scm
* Nix'ten gelme gibi popüler geliştirme araçları . MacOS, LF kullanır. Yalnızca Windows (yalnızca ana akış işletim sistemleri dikkate alınarak) CRLF kullanıyor. Bu, Windows'ta * nix araçlarını kullanan geliştiriciler için ve dosya alışverişi yaparken herkes için işleri zorlaştırır. Ayrıca bkz . Neden CRLF .
*.txt text=auto
ve *.txt text
lütfen arasındaki farkı açıklayabilir misin? Yukarıdaki örneğinizdeki 4 satırın tamamının dosya uzantısından sonra text=auto
olmaması gerektiğini düşündüm text
. Örneğin KiCad ayak izi dosyaları (".kicad_mod" uzantısı), gitattributes dosyasındaki şu satır kullanılarak normalleştirilir: *.kicad_mod text=auto
( kicad-pcb.org/libraries/klc/G1.7 ).
Satır sonlarının normalleştirilmesini sağlar. Kaynak: Kernel.org
Metin "otomatik" olarak ayarlandığında, yol otomatik satır sonu normalleştirme için işaretlenir. Git içeriğin metin olduğuna karar verirse, satır sonları check-in sırasında LF olarak normalleştirilir.
Satır sonu normalleştirmeyi zorlayan bir kaynak kodu yönetim sistemiyle birlikte çalışmak istiyorsanız veya yalnızca deponuzdaki tüm metin dosyalarının normalleştirilmesini istiyorsanız, bunun yerine tüm dosyalar için metin özniteliğini "otomatik" olarak ayarlamalısınız.
Bu, git'in metin olarak kabul ettiği tüm dosyaların depodaki normalleştirilmiş (LF) satır sonlarına sahip olmasını sağlar.
When a text file is normalized, its line endings are converted to LF in the repository.
LF
pencerelerde bile olduğu gibi kaldığını söylemek doğru olur mu?
Bu konfigürasyon, satır sonlarının nasıl işlendiğiyle ilgilidir. Etkinleştirildiğinde, arşivdeki tüm satır sonları LF'ye dönüştürülür. Çalışma dizininizde satır sonlarının nasıl dönüştürüldüğüyle ilgilenecek başka bayraklar da vardır. Bize sorunla ilgili tam bilgi burada: https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html