Scalanie bez konfliktów białych znaków

179

Mam problem polegający na tym, że mam duże zatwierdzenie, które zmienia około tysiąca linii kodu, usuwając białe znaki na końcu linii i usuwając spacje przed tabulatorami.

Istnieje również około 50 żądań ściągnięcia dla tego projektu, z których wszystkie będą miały konflikty po scaleniu mojego zatwierdzenia. Czy jest jakiś sposób na skonfigurowanie git, aby podczas scalania przyszłych zatwierdzeń ignorował konflikty, w których jeden z nich jest tylko zmianą białych znaków?

Modyfikacja samego gita lub użycie narzędzia innej firmy nie jest możliwa, ale użycie haka jest w porządku.

Callumacrae
źródło
Możliwy duplikat git białych nieszczęść
Cees Timmerman

Odpowiedzi:

246
 git merge -Xignore-all-space

Lub (bardziej precyzyjnie)

 git merge -Xignore-space-change

powinno wystarczyć do zignorowania wszystkich konfliktów związanych z przestrzenią podczas scalania.

Zobacz git diff :

--ignore-space-change

Zignoruj ​​zmiany ilości białych znaków.
To ignoruje białe znaki na końcu linii i uznaje wszystkie inne sekwencje jednego lub więcej znaków białych za równoważne.

--ignore-all-space

Podczas porównywania linii ignoruj ​​białe znaki.
Ignoruje to różnice, nawet jeśli jedna linia ma białe znaki, a druga nie ma żadnej.

ks1322 dodaje w komentarzach dobrą radę:

Warto połączyć --no-commiti przejrzeć scalenie przed faktycznym zatwierdzeniem .


OP Callum Macrae informuje, że w takim przypadku scalania kontynuować nieprzerwany, a końcowe spacje zawarte w plastrach żądanie ciągnąć są stosowane do lokalnych plików.
Jednak OP wykorzystuje hak poprzedzający zatwierdzenie, który dba o wspomniane spacje końcowe.
(Przypuszczam, że jest trochę podobny do tego , o którym również tu mowa ).


Haczyk zatwierdzenia wstępnego OP znajduje się tutaj :

Oprócz usuwania spacji końcowych, usuwa tabulatory od jednej do trzech spacji przed tabulatorami (mam szerokość tabulacji ustawioną na 4) i dodaje EOL.
Miałem raporty, że kod dodający EOL usuwa plik w systemie Windows, ale nie był w stanie go replikować.

VonC
źródło
1
Z moich dotychczasowych testów wygląda na to, że usuwa wszystkie zmiany białych znaków w pliku. Jednak teraz używam haka wstępnego zatwierdzania do usuwania białych znaków tailing, więc nie jest to problem.
callumacrae
1
@CallumMacrae: ok i dziękuję za opinie. Ponownie dodałem twój link w odpowiedzi dla większej widoczności.
VCC
1
git merge -Xignore-space-change- cóż, co mogę powiedzieć na pewno, to nie działa ... . Pozostał jedyny kawałek białej spacji, który próbowałem usunąć. Git jest absolutnie do bani.
jww
1
Warto połączyć --no-commiti przejrzeć scalenie przed faktycznym zatwierdzeniem.
ks1322
1
-Xignore-all-space wydaje się nie robić nic z białych znaków i
Preza8