Strategie scalania Git: spacje sprawiają, że domyślnie nie pokazuje konfliktu i przynosi nieoczekiwane rezultaty
Po wielu próbach dostałem prosty scenariusz testowy:
a --> b --> c -- (master)
\ \
--> d --> b' --> e (branch)
Gdzie:
b'
to wiśniowy wybórb
e
jestłączyć zmaster
.b'
zostało zrobione poc
ic
ma modyfikacje do tych samych plików cob
(d
prawdopodobnie nie ma znaczenia).
e
może wyglądać bardzo nieoczekiwanie.
Powiedzmy, że wszyscy z nich mają do czynienia z tym samym plikiemfoobar.txt
„. Tak wygląda plik w każdym zatwierdzeniu:
// ----------- a
foo
delme
bar
// ----------- b
foo
delme
new
bar
// ----------- c
foo
new
bar
// ----------- b'
foo
delme
new
bar
// ------------ e
foo
new
new
bar
Teraz to było z mojego krótkiego testu właśnie terazdokładny Ustawiać.
Jeśli usuniesz wszystkoprzestrzenie tam nie ma takiego problemu. Scalanie po prostu zarzuci konflikt, jak się spodziewam. Ale nie sądzę, abyśmy używali ustawienia -X dla spacji, czego szukamy tutaj ... A może to?
Tymczasem na moim kodzie produkcyjnym, który był powodem, dla którego zacząłem badać to wszystko, a które nie ma prawie tyle pustych miejsc, muszę zobaczyće
zamiast tego szukam czegoś takiego:
// ----------- e
foo
delme
new
bar
Wszystko, co się dzieje zpołączyć nigdy nie oskarżając żadnego konfliktu!
Jeśli git miał wykonać tutaj jakąś magiczną automatyczną scalanie voodoo, to właśnie tak powinien wyglądać:
// ----------- e
foo
new
bar
Ale tak się też nie dzieje.
Jak trochęzrzeczenie się...
Próbowałem teżczytanie instrukcji f, ale nie mogę zrozumieć zbyt wielu punktów w ramach strategii łączenia. Plus tak naprawdę nie mówi, coresolve
strategia robi pod maską, na przykład:
Próbuje dokładnie wykryć dwuznaczności scalania krzyżowego i jest uważany za ogólnie bezpieczny i szybki.
To nic nie mówi.
Tekst o domyślnymrecursive
jest większy, ale nie mogłem też wydobyć z niego wystarczająco dużo informacji:
Donoszono, że skutkuje to mniejszą liczbą konfliktów scalania bez powodowania błędnych połączeń przez testy przeprowadzone na rzeczywistych zatwierdzeniach scalania pobranych z historii rozwoju jądra Linuksa 2.6.
Zgłoszone? Mamy więc jeden bardzo ciężki test jednostkowy i przyjęliśmy kilka raportów, wszystko w porządku?
Cóż, to jest dla mnie zbyt ogólnikowe.
MyślęMuszę zrobić coś złego! Więc jak mogę to zrobić dobrze?
Co muszę zrobić, aby wrócić do połączenia bez obaw?