SORU
8 Temmuz 2010, PERŞEMBE


Nasıl dönüşüm gıt çekirdek ile işi biten hat.autocrlf farklı işletim sistemleri arasında

Farklı bir çok soru ve Taşma yanı sıra Yığında cevapları okudumgitbu belgeleriçekirdek.autocrlfayarı çalışıyor.

Bu okuduğum kadarıyla benim anlayış

Unıx ve Mac (pre-OS X kullanır CR) müşteriler EĞER Satır sonları) kullanın.
Windows istemcileri CRLF Satır sonları kullanın.

Çekirdek zaman.autocrlf true istemci, git deposu, hep saklar EĞER çizgi biten biçim ve Satır sonları dosyaları istemci dönüştürülen ileri geri kontrol / işlemek için istemciler (yani Windows) kullanın olmayan-EĞER Satır sonları ne olursa olsun, biçim Satır sonları dosyaları istemci (bu aynı fikirde olan Tim Clem tanımı - güncelleme aşağıda).

İşte aynı belge için çalışan bir matris 've' yanlış 'temel ayarlar.giriş soru ile autocrlf hattı nerede emin değilim dönüşüm davranışı sonuna işaret eder.

Benim sorular şunlardır:

  1. Soru işaretleri ne olmalı?
  2. Bu matris için "doğru" olmayan soru"? işaretleri

Fikir birliği oluşmuş gibi görünüyor gibi cevaplar soru işaretleri güncelleriz.

                       core.autocrlf value
            true            input              false
----------------------------------------------------------
commit   |  convert           ?                  ?
new      |  to LF      (convert to LF?)   (no conversion?)

commit   |  convert to        ?                 no 
existing |  LF         (convert to LF?)     conversion

checkout |  convert to        ?                 no
existing |  CRLF       (no conversion?)     conversion

Çok çeşitli ayarlar artılarını ve eksilerini üzerinde görüş aramıyorum. Sadece git, üç ayarlarının her biri ile çalışmak için beklemek ne kadar temiz yapar veri arıyorum.

--

Güncelleme 04/17/2012Sonra okuma the article by Tim Clem ile bağlantılı JJD açıklamalarda, modifiye bazı değerleri, "bilinmeyen" değerleri yukarıdaki tabloda, değişen "ödeme mevcut | gerçek dönüştürmek için CRLF yerine dönüştürmek için istemci". Burada başka bir yerde gördüğüm bir şey daha açık olan tanımları veriyor:

çekirdek.= false autocrlf

Varsayılan değer budur, fakat insanların çoğu bunu değiştirmek için teşvik edilir hemen. Yanlış kullanılması sonucu Gıt hiç karışıklık yok dosyasında Satır sonları ile. EĞER veya CRLF ile dosyaları kontrol edebilirsiniz ya da bu üç ve Git CR ya da rastgele bir karışım değil. Bu farklar daha okumaya ve birleştirir daha da zor hale getirebilir. Çoğu insan Unıx/Linux dünyasında çalışmak zorunda değilsiniz, çünkü bu değeri kullanın CRLF sorunları ve ek iş yapmak Gıt ihtiyaçları yok olduğunda dosyaları nesne veritabanı için yazılmış veya yazılan çalışma dizini.

çekirdek.= gerçek autocrlf

Bu Gıt tüm metin dosyalarını işlemek ve emin olun anlamına gelir CRLF nesne veritabanı için dosya yazarken EĞER ile değiştirilir ve dön çalışma içine yazarken tüm CRLF geri EĞER dizin. Bu, çünkü Windows üzerinde tavsiye edilen ayardır deponuzu başka platformlarda kullanılabilir istinat çalışma dizininizdeki CRLF.

çekirdek.autocrlf = giriş

Bu Gıt tüm metin dosyalarını işlemek ve emin olun anlamına gelir CRLF nesne dosyası yazılırken EĞER ile değiştirilir veritabanı. Ancak, ters bir şey yapmayacağım. Dosyaları okurken nesne veritabanından geri çalışma içine yazmak dizin hala satır sonunu belirtmek için işgücü anketi olacak. Bu ayarı genellikle Unix/Linux/OS X üzerinde CRLFs önlemek için kullanılır alma deposuna yazılı. Fikir eğer yapıştırdığınız olursa bir web kod tarayıcı ve yanlışlıkla birine CRLFs var dosyaları, Git yazdığında Sistemi ile değiştirildi olduğundan emin olun. nesne veritabanı.

Tim'in madde özellikle Windows için doğru olması şart değil ki, eksik olan aklıma gelen tek şey depoyu EĞER o varsayar mükemmel biçim, proje.

En yüksek bugüne kadar cevap jmlane tarafından oy için Tim'in makale karşılaştırmak yanlış ayar gerçek ve giriş ayarları ve anlaşmazlık üzerine mükemmel bir uyum gösterir.

CEVAP
13 Aralık 2010, PAZARTESİ


core.autocrlf nasıl çalıştığını en iyi açıklama text öznitelik bölümünde gitattributes man sayfasında buldum.

Bu core.autocrlf şu anda (ya da en azından v1.çalışmaya zorluyor 7.Farkında olduğum şey 2):

  • core.autocrlf = true
    1. Metin dosyaları teslim deposundan çalışma ağacında EOL karakterleri CRLF için normalize LF olacaktır.
    2. CRLF EOL karakterleri ile çalışma ağacında metin dosyaları geri depoya teslim ettiğinde EĞER için normalleştirilmiş.
  • core.autocrlf = input
    1. Metin dosyaları teslim deposundan çalışma ağacında orijinal EOL karakter tutacak.
    2. CRLF EOL karakterleri ile çalışma ağacında metin dosyaları geri depoya teslim ettiğinde EĞER için normalleştirilmiş.
  • core.autocrlf = false
    1. core.eol çalışma ağacın metin dosyaları EOL karakterleri belirler.
    2. EOLs CRLF Windows ve Unıx tabanlı anlamına gelir, varsayılan olarak core.eol = native OS çalışma ağaçlarda EĞER.
    3. gitattributes depo depo ayarları (varsayılan EOL karakterleri LF normalleştirme) taahhüt için EOL karakter normalleştirme belirler.

Sadece son zamanlarda bu sorunu araştırdım ve ben de durum çok karmaşık buluyorum. core.eol ayarı kesinlikle EOL karakterleri git ile nasıl işleneceğini açıklamak yardımcı oldu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • dougownsall

    dougownsall

    7 EKİM 2007
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012