Menghindari Kebingungan Karena Git End Line Pada Windows Pada Multiplatform Development
Linux menggunakan karakter Line Feed (lf
) untuk menandai pergantian baris pada file-file teksnya, sedangkan Windows menggunakan Carriage Return dan Line Feed (crlf
).
Development yang menggunakan git pada lingkungan multiplatform dan men-targetkan multiplatform linux dan windows perlu menggunakan konfigurasi autocrlf auto
. Secara default, git for windows memang menggunakanan autocrlf yaitu menyimpan dengan lf
dan men-checkout dilingkungan windows dengan crlf
.
Default config git for Windows sama dengan perintah dibawah ini:
git config --global core.autocrlf auto
Akan tetapi ssebagian file bisa berjalan normal baik dengan lf
maupun crlf
, tetapi sebagian lagi mesti menggunakan lf
atau mesti menggunakan crlf
.
Hal ini bisa menimbulkan masalah dan kebingungan saat 1 folder pada 1 filesystem diakses oleh 2 sistem operasi, misalnya dalam dual boot laptop atau windows dengan WSL (Windows Subsystem for Linux).
Misalnya dengan memunculkan pesan seperti ini,
bash: ./my-script.sh: /bin/sh^M: bad interpreter: No such file or directory
Atau justru memunculkan keanehan karena string ditimpa karena menerima arahan cr
Cariage Return pada akhir nilai variabel.
Contohnya, berkas script yang menggunakan crlf
akan menghasilkan keanehan,
export MY_VAR="My First Variable"
echo "${MY_VAR} Yeeha!"
Akan menghasilkan:
Yeeha!t Variable
Untuk menghindari kebingungan ada baiknya kita definisikan file-file apa saja yang mesti tetap menggunakan lf
saat di checkout, dengan menetapkannya pada berkas .gitattributes.
*.sh text eol=lf
Setelah ditetapkan eksekusi perintah berikut untuk meng-update file-file yang sudah di checkout sesuai isi file .gitattributes
git rm --cached -r . && git reset --hard
Komentar
Posting Komentar