Stack Overflow'un yanı sıra core.autocrlf ayarının nasıl çalıştığına dair git belgelerinde birçok farklı soru ve cevap okudum .
Okuduğum şeyden bu benim anlayışım:
Unix ve Mac OSX (OSX öncesi CR kullanır) istemciler LF satır sonlarını kullanır.
Windows istemcileri CRLF satır sonlarını kullanır.
Core.autocrlf istemcide true değerine ayarlandığında, git deposu her zaman LF satır sonu biçiminde dosyaları depolar ve istemcideki dosyalardaki satır sonları, teslim alma / tamamlama özelliğini kullanan istemciler (örn. Windows) için ileri geri dönüştürülür -LF satır sonları, satır sonları dosyalarının istemcide hangi formatta olduğuna bakılmaksızın (bu Tim Clem'in tanımına katılmamaktadır - aşağıdaki güncellemeye bakınız).
Burada, core.autocrlf 'satır' dönüşüm 'satır sonu dönüşüm davranış emin değilim' giriş 've' yanlış 'ayarları için aynı belgelemek için çalışan bir matris.
Sorularım:
- Soru işaretleri ne olmalı?
- Bu matris "soru olmayan işaretler" için doğru mu?
Uzlaşma oluşmuş gibi göründüğü için cevaplardaki soru işaretlerini güncelleyeceğim.
core.autocrlf değeri doğru giriş yanlış -------------------------------------------------- -------- taahhüt | dönüştürmek? ? yeni | - LF (LF'ye dönüştür?) (dönüşüm yok?) taahhüt | e dönüşmek ? Hayır mevcut | LF (LF'ye dönüştürme?) Dönüşümü ödeme | e dönüşmek ? Hayır mevcut | CRLF (dönüşüm yok mu?) Dönüşümü
Gerçekten çeşitli ortamların artıları ve eksileri hakkında görüş aramıyorum. Sadece git'in üç ayarın her biri ile çalışmasını nasıl beklediğini netleştiren verileri arıyorum.
-
Güncelleme 04/17/2012 : yorumlarda JJD ile bağlantılı Tim Clem'in makalesini okuduktan sonra , yukarıdaki tabloda "bilinmeyen" değerlerin bazı değerlerini değiştirdim ve mevcut "check out to true" değiştirdim msgstr "CRLF yerine istemciye dönüştür". İşte başka yerlerde gördüğüm her şeyden daha açık olan tanımları:
core.autocrlf = yanlış
Bu varsayılan ayardır, ancak çoğu insan bunu hemen değiştirmeye teşvik edilir. False kullanmanın sonucu Git'in dosyanızdaki satır sonlarıyla hiç uğraşmamasıdır. LF veya CRLF veya CR içeren dosyaları teslim edebilirsiniz veya bu üçünün rasgele bir karışımını kullanabilirsiniz ve Git umursamaz. Bu, farkların okunmasını zorlaştırabilir ve birleştirmeyi daha zor hale getirebilir. Unix / Linux dünyasında çalışan çoğu insan bu değeri kullanır çünkü CRLF sorunları yoktur ve dosyalar nesne veritabanına yazıldığında veya çalışma dizinine yazıldığında Git'in fazladan iş yapmasına gerek yoktur.
core.autocrlf = doğru
Bu, Git'in tüm metin dosyalarını işleyeceği ve bu dosyayı nesne veritabanına yazarken CRLF'nin LF ile değiştirildiğinden ve çalışma dizinine yazarken tüm LF'yi tekrar CRLF'ye dönüştürdüğü anlamına gelir. Bu, Windows'ta önerilen ayardır, çünkü çalışma dizininizde CRLF'yi tutarken deponuzun diğer platformlarda kullanılabilmesini sağlar.
core.autocrlf = giriş
Bu Git'in tüm metin dosyalarını işleyeceği ve bu dosyayı nesne veritabanına yazarken CRLF'nin LF ile değiştirildiğinden emin olacağı anlamına gelir. Ancak bunun tersini yapmayacaktır. Dosyaları nesne veritabanından geri okuduğunuzda ve çalışma dizinine yazdığınızda, satır sonunu göstermek için hala LF'leri olacaktır. Bu ayar genellikle Unix / Linux / OS X'te CRLF'lerin depoya yazılmasını önlemek için kullanılır. Bir web tarayıcısından kod yapıştırdıysanız ve yanlışlıkla dosyalarınızdan birine CRLF'ler eklediyseniz Git, nesne veritabanına yazdığınızda bunların LF'lerle değiştirildiğinden emin olur.
Tim'in makalesi mükemmel, eksik olduğunu düşünebileceğim tek şey, deponun özellikle sadece Windows projeleri için mutlaka doğru olmayan LF formatında olduğunu varsayıyor.
Tim'in makalesini jmlane tarafından bugüne kadarki en yüksek oylanan cevapla karşılaştırmak, doğru ve giriş ayarları üzerinde mükemmel bir anlaşma ve yanlış ayar üzerinde anlaşmazlık gösterir.
autocrlf
Yanlış tutmak çok daha kolay görünüyor;) stackoverflow.com/questions/2333424/…