Intro

W mojej miłej pracy, tuż po tym jak wdrożyłem (wdrożyliśmy, ale to ja go chciałem najbardziej) gita, zostałem jego zarządcą. Zarządca gita? Co ten termin może oznaczać? Tak naprawdę nic więcej jak to, że codziennie z rana uruchamiam skrypt mergujący (o ten) i patrzę czy wszystko przebiegło zgodnie z planem. Jak można się domyśleć, zazwyczaj nie przebiega. Pojawiają się konflikty. Ponieważ pracujemy nad tym samym kodem w kilku głównych gałęziach, pojawiają się właściwie zawsze.

 

Rozdział pierwszy

Jako git merge tool mam ustawiony vimdiff. Sprytne narzędzie które w vimie pokazuje porównanie plików w kilku oknach. Widać dokładnie co się zmieniło, gdzie, jak, po co i dlaczego. Jedyny problem dla mnie to jakiś dziwny schemat kolorowania. Różowe dające po oczach kolory? hmmmm… Pewnie bym to zmienił i ustawił, ale narzędzie to ma dla mnie poważną wadę. Nie rozumie, albo mnie nie udał się zmusić by rzeczywiście porównał te pliki. Tak naprawdę on polega na gicie i tym co git powiedział za pomocą <<<HEAD ==== >>>>>xxxx. A git niestety często nie rozumie naszego kodu i uznaje że zmienił się cały plik (tak wyłączyłem spacje, ale jeśli ktoś ma jakiś pomysł to poproszę). Dlatego tego narzędzia używam tylko jeśli zmiany są niewielkie i git je zrozumiał 🙂

 

Rozdział drugi

Kolejnym narzędziem jest mój, ostatnio ulubiony edytor – VSCode. Sprytne narządko, odkąd posiada dodatki zastąpiło mi notepada, Atoma (który był poprzednim ulubieńcem) oraz Sublime Text (jeszcze wcześniejszy czempion).  Do tego ma wbudowaną obsługę gita. W sumie super. Ale niestety ono też nie rozumie kodu i słabo wyglądają porównania w nim. De facto edycja wygląda jak w czystym vim, ale przyjemniej. Fajne narzędzie jako notatnik, ale niespecjalnie się sprawdziło do mergowania plików. Zaliczyło również wpadkę, bo gdy pierwszy raz poprawiłem plik, nie zapisałem go. Kazałem go wrzucić do git, a on bez ostrzeżenia wrzucił niezapisany ze znacznikami <<< Head === >>> xxxx. Wiadomo mój błąd, ale jednak niesmak jakiś jest, że nie ostrzegł.

 

Rozdział trzeci

Visual Studio 2015 i moje mieszane uczucia do niego sprawiły, że jest to najmniej lubiane przeze mnie narzędzie w ogóle. Jest za duże, za wolne, po update się psuje, wiesza, nie można przełączać nic w gicie pod spodem, bo przeładowanie plików powoduje zawieszenie w najlepszym, a wywalenie w najgorszym wypadku. Standardem jest, że trzeba wyłączyć solucję gdy cokolwiek robi się w gicie. To są te złe rzeczy. Natomiast program naprawdę doskonale sobie radzi z konfliktami w naszym projekcie. 90% konfliktów rozwiązuje sam. Nie mam do tych rozwiązań żadnych zastrzeżeń. Resztę pokazuje w naprawdę fajnym narzędziu porównawczym. Kiedyś do porównywania używałem win merge, ale teraz VS doszedł do tego jak to robić dobrze.

 

Outro

Jeśli mam konflikt w projekcie w pracy, właściwie od  razu przechodzę do Visual Studio. Czekam sobie dość długo zanim przemieli repozytorium, a potem szybko i sprawnie rozwiązuję konflikty. Zaraz po ich rozwiązaniu uciekam z powrotem do babuna, bo robienie czegoś na gicie z poziomu tego molocha to strata czasu.

A Wy? Czy też macie kogoś kto merguje Wam zmiany między gałęziami?  W czym rozwiązujecie konflikty? A może zapobiegacie ich wystąpieniu? Może znacie fajniejsze narzędzia, bądź wiecie co z obecnymi robię nie tak?

5 Replies to “Rozwiązywanie konfliktów, narzędzia.

  1. Pingback: dotnetomaniak.pl
  2. Potwierdzam, że VS2015 działa najlepiej z wymienionych przez Ciebie narzędzi. Warunkiem jest oczywiście praca bez załadowanej solucji, tym bardziej, że przy merge’ach kompletnie nie ma takiej potrzeby.

    KDiff3 – zawartość wydaje się interesująca, ciekawe jakby wypadło w “praniu”.

  3. Ja jako klienta git-a używam Source ale mimo wszystko mam obok zainstalowany tortoise git. Powody ku temu mam 2:
    – W Tortoise mogę założyć repozytorium “Bare” 2 kliknięciami myszy (robię sporo Pet-project)
    – Tortoise ma zintegrowane narzędzie TortoiseMerge z którym SourceTree potrafi współpracować.
    Bardzo często zdarza mi się że otwieram skonfliktowany plik przy użyciu tego narzędzia, a on mi pokazuje że konflikty zostały rozwiązane, a nawet jeżeli nie to trzeba zrobić naprawdę niesamowitą sieczkę w kodzie żeby się nie dało go zmergować.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *