W pracy repozytorium mamy postawione na TFS’ie. Przejście na GIT’a jest (przynajmniej na tą chwilę) nie planowane 😦 Trzeba więc zacisnąć zęby i korzystać z tego co mamy..
Ale kurde… do tej pory korzystałem praktycznie zawsze z GIT’a i trochę mnie to jednak boli
Przykłady:
- TFS nie ogarnia zmian na plikach, jeśli nie zostały wprowadzone z poziomu Visual Studio. Żeby zmiany pojawiły się w „Pending changes”, muszę ten plik otworzyć w VS’ie, dodać np spację i zapisać plik. To bynajmniej nie jest działanie, którego oczekuję od systemu kontroli wersji… Przed „check in’em” muszę przypomnieć sobie wszystkie pliki, które zmieniałem o_O… To raczej okno „Pending changes” powinno widzieć wszystkie zmiany, a nie żebym ja musiał je pilnować…
- TFS ciągle wrzuca mi do „Pending changes” pliki, które nie mają w sobie żadnych zmian.. Nie wiem czy to pliki, które zmodyfikowałem a później cofnąłem wprowadzone zmiany… czy on tak sam z siebie, z nudów… W każdym razie, przed „Check in’em” zawsze przeglądam wszystkie pozycje na liście i usuwam zwykle przynajmniej pół z nich… ale jeśli już jesteśmy przy przeglądaniu zmian…
- Podgląd zmian na TFS’ie jest toporny. Korzystałem zawsze z SourceTree i tam wystarczyło kliknąć w plik na liście i po prawej widzimy zmiany. W „Pending changes” muszę kliknąć prawym klikiem na pliku, wybrać „Compare” a następnie „With latest version”. Po tym dopiero otwiera się nowe okno, które dopiero pokazuje mi zmiany… Nie mam w zwyczaju commitowania wszystkich zmienionych plików „jak leci” (żeby nie wkleić jakichś śmieci), więc przeglądam wszystkie pozycje
Można jeszcze sporo wymienić… no ale do sedna 🙂
Takim tymczasowym rozwiązaniem, czy może bardziej „pomocą”, jaką sobie podałem jest… używanie GIT’a 🙂 W folderze projektu zainicjalizowałem nowe repozytorium GIT’a i podłączyłem go do SourceTree. Teraz wszystkie pliki jakie zmieniam, widoczne są w pięknym i wygodnym podglądzie w SourceTree 🙂
Niestety Visual Studio ma wbudowaną obsługę repozytoriów GIT’owych i gdy tylko wykrył takie na folderze solucji… zablokował mi możliwość „checkinowania” kodu do TFS’a xD
Próbowałem to rozwiązać przenosząc folder .git wyżej, ale VS nadal go wykrywał. Dalej znalazłem rozszerzenie „nogit”… ale nie działa ono z najnowszym VS 2015…
W końcu znalazłem rozwiązanie (http://stackoverflow.com/questions/21150060/how-can-you-disable-git-integration-in-visual-studio-2013-permanently) – należy zainicjalizować repozytorium gitowe w ten sposób, aby folder GIT’a nazywał się „_git” zamiast „.git”, oraz stworzyć skrót do „_git” o nazwie „.git”.
git init --separate-git-dir _git
Visual Studio szuka folderu „.git”, znajdzie tylko skrót, wiec nie zadziała. No i można „checkinować” kod do TFS’a 🙂
Pracy jest trochę wiecej, trzeba ogarniać dwa systemy kontroli wersji a nie jeden (choć na gicie nie trzeba tak się starać o czystość commitów). Nadal też muszę klikać „Compare” w Visual Studio, ale przynajmniej mam pewność, że nie zapomniałem „zacheckinować” jakiegoś pliku, który edytowałem poza Visual Studio. Wystarczy, że porównam listę „Pending Changes” w VS z listą zmian w Source Tree 🙂