Gdy cały zespół programistów korzysta z jednego systemu operacyjnego, wtedy współpraca jest bezproblemowa. Problemy zaczynają się gdy mamy różne systemy operacyjne w zespole. Problem ten stanowi różna reprezentacja nowej linii w systemach operacyjnych.
Reprezentacja nowej linii w systemach operacyjnych
| System operacyjny | Reprezentacja nowej linii | Kod ucieczki |
|---|---|---|
| Unix/Linux/macOS | LF (Line Feed) | \n |
| Windows | CRLF (Carriage Return + Line Feed) | \r\n |
| Klasyczny macOS | CR (Carriage Return) | \r |
Problem
Łatwo można sobie wyobrazić przykładową sytuację:
1. Programista A (Linux) dodaje kilka linii kodu:
a = 1 \n
b = 2 \n
print(a+b)
2. Programista B (Windows) dodaje kilka innych:
a = 1 \n
b = 2 \n
print(a) \r\n
print(b) \r\n
print(a+b)
I mamy bałagan 😉
Rozwiązanie
Na szczęście dla takich sytuacji powstało wsparcie z poziomu Gita – jest to opcja core.aurocrlf. Może ona przyjmować 3 wartości: true, input, false.
core.autocrlf=true

w tym przypadku następuje automatyczna konwersja w dwie strony – przy pobraniu kodu z repozytorium z LF na CRLF oraz przy wypychaniu zmian z CRLF na LF.
core.autocrlf=input

w tym przypadku konwersja zachodzi tylko przy wypychaniu zmian
core.autocrlf=false

w tym przypadku nie następuje konwersja z żadną ze stron
