Chyba każda większa firma wykorzystuje system kontroli wersji. Przykrą częścią jest niestety fakt, że nie każdy ma możliwość pracy w GIT-cie, który, według mnie, jest najlepszy do tej roboty. Całkiem sporo firm pracujących na platformie .NET nadal używa TFS-a - scentralizowanego systemu kontroli wersji od firmy Microsoft. O jego wadach i zaletach można sporo przeczytać się w internecie. Mając odnieść się do konkretnego, zaufanego źródła, to o TFS-ie kilka nie miłych słów można usłyszeć na vlogu Maćka Aniserowicza. Pewnego pięknego dnia sam dołączę do grona opisujących tą tragedie, aczkolwiek w dzisiejszym, krótkim artykule, planuje trochę ulżyć zmuszonym przez los do używania TFS - a. Przedstawię sposób na zdjęcie lock-a z pliku założonego przez innego programistę. Kiedy się to przydaje?
Opis sytuacji
Cała sytuacja miała miejsce dość niedawno. Przejąłem projekt po programiście, który poszedł na kilka dni urlopu. Miałem tam tylko wprowadzić małą poprawkę. Niestety, zastała mnie przykra niespodzianka - skończyło się kakałko i musiałem iść do sklepu. A i, plik, który potrzebowałem zmodyfikować, miał na sobie nałożonego lock-a. Takie sytuacja się zdarzają. Tak więc szybki telefon, czy przez przypadek nie ma on zmian w tym pliku... uff, nie ma. No to działamy. Na szczęście miałem pełnego admina na serwerze TFS-a więc posiadałem uprawnienia. aby to zrobić.
Dodanie konsolowej aplikacji tfs-a
Jak mogliście wywnioskować - krok zerowy to posiadanie admina. Następnie musimy ustawić alias (Uwaga! Jako konsoli użyłem PowerShell - a, ponieważ służbowe komputery postawione są na Windows-ie) do konsolowej aplikacji tf:
Set-Alias tfs "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe"
Pozwala to, na naszej maszynie, wykonać polecenia tfs-a. Oczywiście ścieżka jaką trzeba podać jest zależna od lokalizacji zainstalowanej kopii Visual Studio :)
Znalezienie workspace-a
Teraz znajdujemy wszystkie workspace-y danego użytkownika. Niestety, jeżeli pracujecie w dużej firmie, gdzie wykorzystujecie ActiveDirectory do logowania, a użytkownik może się zalogować na dowolny komputer za pomocą domenowego login-u i hasła, może zajść sytuacja, że posiada on kilka stworzonych workspace-ów w TFS-ie. Zakładając, że nazwą użytkownika jest jego imię i nazwisko, to za pomocą komendy tfs workspaces możemy znaleźć jego wszystkie workspace-y:
tfs workspaces /owner:"Kiełbasa Kamil"
Powinniśmy otrzymać listę workspace-ów wraz z nazwą komputera:
Obszar roboczy Właściciel Komputer Komentarz
X012 Kiełbasa Kamil X012 X013 Kiełbasa Kamil X013 X014 Kiełbasa Kamil X014
Zdjęcie Lock-a
Ostatnia część, według mnie najtrudniejsza, to wykorzystanie komendy tfs undo, aby zdjąć lock-a tylko z pojedynczego pliku. Nie chcemy przecież naszemu znajomemu zresetować stanu całej kolekcji.
Tu mamy wzór komendy:
tfs undo /workspace:"{nazwa-workspace-a};{właściciel}" /collection:{adres-url-kolekcji-na-serwerze-tfs} ${ścieżka-do-pliku-na-serwerze}
W moim przypadku wyglądała następująco:
tfs undo /workspace:"X013;Kiełbasa Kamil" /collection:http://example.com:8080/tfs/DefaultCollection $/Katalog/Solucja/Controllers/HomeController.cs
Wystarczy już tylko uaktualnić swój obszar roboczy i jesteśmy w domu! :)
Podsumowanie
TFS to narzędzie jak każde inne, tylko gorsze. Wystarczy jednak trochę czasu, cierpliwości, więcej cierpliwości i chęci, by sobie poradzić. Mam nadzieje, że nie będzie konieczności, by artykuł wam się przydał. Lepiej jednak mieć skąd zaczerpnąć awaryjną wiedzę ;)
Do Następnego!
Cześć