Problem znaku nowej linii – czyli jak współpracować z programistami posiadającymi różne systemy operacyjne

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 operacyjnyReprezentacja nowej liniiKod ucieczki
Unix/Linux/macOSLF (Line Feed)\n
WindowsCRLF (Carriage Return + Line Feed)\r\n
Klasyczny macOSCR (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

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *