2009-10-05 18 views
9

Mamy repozytorium, które zostało wyeksportowane z subversion do git. To repozytorium jest używane przez użytkowników komputerów Mac, Linux i PC. Nie trzeba dodawać, że zakończenia linii to bałagan. Niektóre pliki kończą się na CRLF, LF lub CR, a niektóre mają połączenie wszystkich dwóch lub trzech w jednym pliku.Klarowanie/usuwanie problemów kończących linię w GIT

Dodawanie autocrlf = true wydaje się naprawić rzeczy nieznacznie. Jednak różnice czasami pojawiają się dość dziwnie, tzn. Edycja jednej linii do pliku powoduje, że wszystkie linie wyglądają na zmienione w różnicach (zakładam, że wynikało to z zakończenia linii dla wszystkich plików) i czasami jedna linia edytuje plik działa poprawnie.

Czy istnieje strona internetowa, czy ktoś mógłby wyjaśnić, jak możemy rozwiązać ten problem? Czy istnieje ustawienie git, które musimy ustawić, czy też musimy zrobić zbiorczą aktualizację wszystkich plików, aby zakończyć linię lub co?

Każda pomoc będzie bardzo ceniona, ponieważ jest dość nieporządna!

(Poniższa stackoverflow post pojawi to może pomóc, choć robi to odpowiedzieć, co się dzieje, gdy mamy innego komputera Mac lub PC lub Linux użytkownik popełnienia kolejnego patcha)

Odpowiedz

5

to związane SO pytanie będzie interesujące dla Ciebie:

Trying to fix line-endings with git filter-branch, but having no luck

i tu jest podobny do a link poradę Github.

Ponadto, jak wspomniano w poście Greg Hewgill za dobrze jest upewnić się, że przyszłe pracach uczestniczyło użyciu edytor, który poprawnie obsługuje nową politykę kończący linię.

Kiedy mówisz „Dodawanie autocrlf = true wydaje się naprawić rzeczy lekko”. Zakładam, że zrobiono to przy użyciu .gitattributes.

+2

A więc krok pierwszy: naprawianie zakończeń linii w repozytorium. Krok drugi: powiedz ludziom, żeby użyli 'git config --global core.autocrlf true', a następnie podzielili je, jeśli popełnią błąd, nie używając go? – corydoras

+0

@corydoras: Piękno '.gitattributes' polega na tym, że plik można przekazać do repozytorium. Jeśli 'core.autocrlf' jest ustawiony w pliku i pchnął, to uważam, że powinien on egzekwować zakończenia linii w dowolnych klonach. Jednak nie jestem pewien, czy potrzebne będą świeże klony, czy też każdy z nich będzie musiał postępować zgodnie z radą podaną na Github. –

5

chciałbym spróbować, jak to możliwe, w celu ujednolicenia na zasadzie wspólne zakończenie linii, które będzie używane we wszystkich plikach źródłowych w twoim projekcie. Dobrym wyborem może być tylko LF, jednak sprawdziłbym, czy edytor (y) używane przez programistów obsługują wybraną linię wspólną, kończąc ją prawidłowo i poprawnie. (W tym przypadku, oznacza to, że nie zmienia się każdej linii w pliku tylko dlatego, że użytkownik zmienił jedną linię.)

Może być konieczne wykonanie dużego zadania czyszczenia i mieć jedno duże zatwierdzenie, które zmienia wszystkie zakończenia linii pliku do wybranego standardowego zakończenia. To będzie niezręczne, ale prawdopodobnie nie będzie tak kłopotliwe, jak utrzymanie różnych końcówek linii.

Powiązane problemy