Ostatnio udało mi się w końcu popracować na VS2012 z najnowszym TFS 2012. I muszę powiedzieć, że… pierwszego dnia natrafiłem na problem. Jak to bywa w „super dobrych” kontrolach wersji merge działa jak chce, kiedy chce a potem może łaskawie poinformuje użytkownika o czymś ale bez konkretów.

Dla przykładu, kiedy pracujecie nad projektem SharePointowym i macie feature dodany który wy zmodyfikowaliście ale swoich zmian jeszcze nie z checkinowaliście. Plik zaś jest otworzony w VS ale zmiany w nim są zapisane.

Ktoś inny również zmodyfikował feature i swoje zmiany z checkinował.

Wy wybieracie opcje „Get Latest Version” i nagle dostajecie takie o to piękne okienko:

tfs-fun

Jak widać macie dwie możliwości: Yes lub No.

Co się stanie kiedy klikniecie Yes?

Zmiany z serwera zostaną olane i będziecie musieli na nowo je wprowadzać – jeżeli oczywiście wiecie jakie zmiany… czyli po tym jak po deployu skapniecie się, że coś poprawnie nie działa, napiszecie do dev, który był odpowiedzialny za kod i spytacie się go czy aby na pewno z checkinował kod.

Po krótkiej dyskusji oraz sprawdzeniu u osoby trzeciej jak i w Source Control, dochodzicie do wniosku, że tak on z checkinował kod i wszystko w TFS jest w porządku. Jednak wasze solution jest zwalone. Dowiadujecie się co i jak trzeba zrobić od dev i potem kontynuujecie pracę.

Co się stanie kiedy klikniecie No?

Wasze zmiany znikają. Robicie deploy i okazuje się, że na przykład wasz web part nie istnieje. Ale jako to? Przecież 5 minut temu jak robiłem deploy to istniał. Sprawdzanie log, widać, że dev coś tam jakiś nakmiecił, więc piszecie do niego: te stary, po Twoim checkinie kod nie działa.

Po jakimś czasie orientujecie się, że wasz feature został po prostu na chama nadpisany przez VS przez wersję serwerową pliku. Wprowadzacie ponownie swoje zmiany i zapominacie o tym, że jakieś głupie okienko wam wyskoczyło wcześniej. Znów pobieracie kod i bam, okienko znów wyskakuje i znów macie problem.

Jak z tego wyjść?

Nie ma dobrej opcji, jest to zjebany system mergowania w VS i TFS, ba jak już się skapniecie, co jest grane, to w logach od Output window dla źródła Source Control – Team Foundation znajdziecie taki o to wpis:

Conflict FILEPATH – Unable to perform the get operation because you have a conflicting edit

No ale to mówi o konflikcie, więc czemu nie ma możliwości jego rozwiązania po przez merge? I skoro opis błędu jest „nie mogę pobrać” to czemu on to pobiera?

Po prostu wziąć krakersy i zacząć sobie nimi żyły podcinać! 2012 rok (już prawie 2013, może dlatego takie problemy?) a my dalej mamy dziecinne problemy z TFS i VS!

Jedynym moim zdaniem słusznym rozwiązaniem tego problemu jest kliknięcie No i ręczne naprawienie pliku. Dlaczego tak? Bo to nasze zmiany uległy utraceniu, więc my powinniśmy wiedzieć co zrobić w takiej sytuacji. Klikanie Yes tylko doda nam zbędnej pracy i komunikacji.

Aktualizacja: Słusznie zostałem poinformowany. Okno to jest modalne (a pliki na dysku już nadpisane) i jeżeli tyczy innego pliku niż feature (jak na przykład cs) to chyba lepiej wybrać opcję Yes i potem jakoś to mergować (bo inaczej można stracić parę ładnych godzin pracy), ale patrzcie na PS bo możliwe, że to tylko dla feature istnieje ten problem.

Podsumowanie

I co z tego, że TFS ładnie się integruje z VS, jak ma takie problemy. Nie mówiąc już o innych jak nadpisywanie zmian z klienta na serwerze – plik na serwerze zaktualizowany o godzinie 10, o godzinie 11 klient robi checkin, nie dostaje informacji o konflikcie i nadpisuje plik z godziny 10 w którym był naprawiony bug. Teraz dev dostaje buga critical z informacją: czemu piszesz, że naprawiony jak nie napraiony? To już któryś raz, kiedy takie coś do Ciebie pisze! Testuj lepiej swój kod!

Można tylko załamać ręce i dalej męczyć się z tym środowiskiem, lub wybrać inne, bardziej przystosowane do pracy dev w XXI wieku.

PS.: pisze tutaj o feature, bo na tym pliku miałem najwięcej problemów, czy tylko na tym pliku? ciężko powiedzieć, dopiero przy 3-4 takim oknie skapnąłem się co jest grane! albo debil ze mnie, albo z założenia jak wyskakuje okno alert w windows to tego nie czytam ;)

1 KOMENTARZ

Comments are closed.