29 Haziran 2021 Salı

git .gitattributes Dosyası

End Of Line Formatlama Nasıl Olmalı
İki seçenek var
1. .gitattributes dosyasına eklemeler yapmak 
2. git config ile istenilen değeri atamak

Bu iki yöntemden .gitattributes tercih edilmeli 

.gitattributes Dosyası Yöntemi
Not : IntelliJ kullanıyorsak Settings > Editor > Code Style altında Line separator alanı Unix and macOs (\n) seçilmeli. Böylece her şey her zaman Linux gibi olacak

.gitattributes dosyasındaki text değerinin açıklaması şöyle
text
This attribute enables and controls end-of-line normalization. When a text file is normalized, its line endings are converted to LF in the repository. To control what line ending style is used in the working directory, use the eol attribute for a single file and the core.eol configuration variable for all text files.
Örnek - Kod Dosyaları İçin LF'i Muhafaza Etmek
Kısaca şöyle yaparız. Kod için şöyle yaparız
# linux line-endings
*        text eol=lf
Eğer zaten git'e ekli dosyalar varsa ve .gitattributes sonradan ekleniyorsa, .gitattributes dosyasını oluşturduktan sonra dosyayı IntelliJ ile açıp satır sonunu LF yaparız. Bu durumda git dosyada değişiklik olduğunu düşünüyor. Daha sonra şöyle yaparız
git add --renormalize .
Bunu yapınca git artık değişiklik olduğunu düşünmüyor.

Örnek - *.sh Dosyaları İçin LF'i Muhafaza Etmek
Windows bilgisayarda checkout yaparken bash betiklerinin (script) bozulmaması için şöyle yaparız
*.sh text eol=lf
Aynı şey sanırım şöyle de yapılabilir.
# Never modify line endings of our bash scripts
*.sh -crlf
Örnek - Dosya Uzantısına Göre Karışık Kullanım
Şöyle yaparız
# auto
*           text=auto     
*.txt       text

# windows line-endings
*.vcproj    text eol=crlf 

# linux line-endings
*.sh        text eol=lf   

*.jpg       -text
Örnek - auto normalization
Şöyle yaparız
* text=auto
Açıklaması şöyle. Böylece Windows'tan commit yapsak bile repository 'de LF olarak saklanır. Windows checkout yaparken CRLF olarak alır, Linux ise LF olarak alır.
With this set, Windows users will have text files converted from Windows style line endings (\r\n) to Unix style line endings (\n) when they’re added to the repository.

git config Yöntemi
Windows'ta End Of Line formatlamayı Linux gibi için şöyle yaparız
git config --global core.autocrlf true
Linux'ta End Of Line formatlamayı Linux gibi için şöyle yaparız
git config --global core.autocrlf input

Hiç yorum yok:

Yorum Gönder