Dlaczego dlaczego DLACZEGO TFS nie otrzymuje stale najnowszych prac?
Można by pomyśleć, że ta funkcja zostanie dokładnie przetestowana.
Muszę tylko pobrać konkretną wersję, a następnie sprawdzić oba pliki nadpisz do zapisu + nadpisz wszystkie pliki.
Czy moja lokalna konfiguracja jest zepsuta, czy też to robisz?
Odpowiedzi:
TFS na nowo zdefiniował funkcję „Pobierz najnowsze”. W terminologii TFS Pobierz najnowsze oznacza pobranie najnowszej wersji plików, ale zignoruj te, które według serwera znajdują się już w obszarze roboczym. Co dla mnie i prawie wszystkich innych na tej planecie jest w błędzie.
Zobacz ten link: http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx
Jedynym sposobem, aby zrobić to, co chcesz, jest pobranie określonej wersji, a następnie zaznaczenie obu pól „Zastąp ...”.
źródło
Czasami
Get specific version
nawet zaznaczenie obu pól wyboru nie daje najnowszego pliku. Prawdopodobnie dokonałeś zmiany w pliku i chcesz cofnąć te zmiany, ponownie pobierając najnowszą wersję. Cóż ... po toUndo pending changes
jest, a nie celemGet specific version
.W razie wątpliwości:
A ten jest moim ulubionym, który właśnie odkryłem:
wypatruj
Output
okna w poszukiwaniu takich wiadomości:Ostrzeżenie - nie można odświeżyć R: \ TFS-PROJECTS \ www.example.com \ ExampleMVC \ Example MVC \ Example MVC.csproj, ponieważ masz oczekującą edycję.
Ten krytyczny komunikat pojawia się w oknie wyjściowym. Brak innych powiadomień! Nie ma żadnych oczekujących zmian ani żadnego innego komunikatu dialogowego informującego, że plik, którego właśnie zażądałeś, nie został pobrany! I tak - rozwiązujesz ten problem, po prostu uruchamiając
Undo pending changes
i pobierając plik.źródło
Undo pending changes
) zadziałała dla mnie.TFS, podobnie jak niektórzy inni dostawcy kontroli źródła, tacy jak Perforce, robi to, ponieważ system wie, jaka była ostatnia wersja, którą pomyślnie uzyskałeś, więc uzyskaj najnowsze zmiany w „pobierz zmiany od x”. Jeśli grasz zgodnie z jego zasadami i faktycznie sprawdzasz rzeczy przed ich edycją, nie mylisz spraw, a „pobierz najnowsze” naprawdę robi to, co mówi.
Jak widziałeś, możesz zmusić go do ponownej oceny wszystkiego, co ma znacznie większe wykorzystanie przepustowości, ale zachowuje się bliżej tego, jak kiedyś SourceSafe.
źródło
Trudno jest odpowiedzieć na stwierdzenie bez przykładów, jak to nie działa, ale ważne jest, aby zrozumieć, że TFVC (w trybie „Server Workspace”, który był mechanizmem przed TFS 2012) nie sprawdza stanu lokalnego systemu plików . Obszary robocze serwera TFVC to system typu „wyewidencjonuj-edytuj-zamelduj”, w którym jest to zgodne z projektem, celową decyzją podjętą w celu znacznego zmniejszenia ilości plików we / wy wymaganych do określenia stanu obszaru roboczego. Zamiast tego informacje o obszarze roboczym są zapisywane na serwerze.
Umożliwia to bardzo wydajne skalowanie obszarów roboczych serwera TFVC do bardzo dużych baz kodów. Jeśli jesteś w wielogigabajtowej bazie kodu (takiej jak Visual Studio lub drzewo źródłowe Windows), twój klient nie musi skanować lokalnego systemu plików w poszukiwaniu plików, które mogły się zmienić, ponieważ umowa, którą masz z TFS, jest taka, jawnie wypisze plik, gdy będziesz chciał go edytować.
Oczekuje się, że nie będziesz oznaczać pliku jako tylko do zapisu i zmieniać go bez uprzedniego jawnego sprawdzenia. Jeśli pójdziesz tą trasą, serwer nie wie, że wprowadziłeś zmiany w pliku, a wykonanie operacji „Pobierz najnowsze” nie zaktualizuje lokalnego obszaru roboczego, ponieważ nie poinformowałeś serwera o tym zmiany.
Jeśli zrobić obalić ten mechanizm następnie można użyć
tfpt reconcile
polecenia, aby zbadać swoją lokalną przestrzeń roboczą dla zmian, które zostały wykonane na miejscu.Jeśli korzystasz z opcji „Pobierz określoną wersję” i wybierasz opcje „wymuś” i „nadpisz”, jest bardzo prawdopodobne, że masz zwyczaj omijania wszystkich wymuszeń wdrożonych przez TFS, aby nie zrobić sobie krzywdy, i prawdopodobnie powinieneś rozważyć lokalne obszary robocze TFVC.
Lokalne obszary robocze TFVC zapewniają system kontroli wersji typu „edycja-scalanie-zatwierdzenie”, co oznacza, że nie trzeba jawnie wypisywać plików przed ich edycją i nie są one dostępne tylko do odczytu na dysku. Zamiast tego wystarczy edytować plik, a klient przeskanuje system plików, zauważy zmianę i przedstawi ją jako oczekującą.
Lokalne obszary robocze TFVC są zalecane w przypadku małych projektów, które nie wymagają szczegółowej kontroli uprawnień, ponieważ zapewniają znacznie ładniejszy przepływ pracy. Nie musisz być w trybie online i nie musisz jawnie wypisywać plików przed ich edycją.
Lokalne obszary robocze TFVC są ustawieniami domyślnymi w programie TFS 2012 i jeśli nie są włączone, należy zapytać administratora serwera. (Organizacje z bardzo dużymi bazami kodów lub surowymi wymaganiami kontrolnymi mogą wyłączyć lokalne obszary robocze TFVC).
Doskonała książka Erica Sinka Version Control By Example przedstawia różnice między systemami checkout-edit-checkin i edit-merge-commit oraz kiedy jeden jest bardziej odpowiedni od drugiego.
Książka Professional Team Foundation Server 2013 zawiera również doskonałe informacje na temat różnic między obszarami roboczymi serwera TFVC a lokalnymi obszarami roboczymi TFVC. Dokumentacja i blogi MSDN również zawierają szczegółowe informacje:
źródło
Team Foundation Server (TFS) śledzi swoją kopię lokalną w ukrytym katalogu o nazwie $ TF. Kiedy wydajesz polecenie „pobierz najnowszą wersję”, TFS zagląda do tego folderu i sprawdza pogodę. Mam najnowszą kopię lub nie. Jeśli tak, nie pobierze najnowszej kopii. Nie ma znaczenia, czy masz oryginalny plik, czy nie. W rzeczywistości mogłeś usunąć cały folder (jak w moim przypadku), a TFS nie pobierze najnowszej kopii, ponieważ nie zagląda do rzeczywistego pliku, ale do ukrytego katalogu, w którym rejestruje zmiany. Wada tego projektu polega na tym, że wszystko, co zrobiono poza systemem, nie zostanie zapisane w TFS. Na przykład możesz przejść do Eksploratora Windows, usunąć folder lub plik, a TFS go nie rozpozna. Będzie całkowicie ślepy. Przynajmniej spodziewałbym się, że system Windows nie pozwoli ci usunąć tego pliku, ale tak!
Jednym ze sposobów wymuszenia najnowszej kopii jest ręczne usunięcie ukrytego folderu $ TF. Aby to zrobić, przejdź do wiersza polecenia i przejdź do folderu głównego, w którym został wyrejestrowany projekt, i wydaj to polecenie
Jeśli chcesz po prostu sprawdzić ukryty folder, możesz to zrobić za pomocą
Uwaga: jeśli to zrobisz, tf pomyśli, że nie masz żadnej lokalnej kopii, mimo że masz ją w plikach i zsynchronizuje wszystko ponownie.
Uwaga: użyj tej metody na własne ryzyko. Nie używaj go do krytycznych prac.
źródło
Opcja „Pobierz najnowszą wersję” domyślnie pobierze tylko te pliki, które uległy zmianie na serwerze od ostatniego uruchomienia polecenia „Pobierz najnowszą wersję”. TFS śledzi pobierane pliki, aby nie tracić czasu na ponowne pobieranie tej samej wersji plików. Jeśli modyfikujesz pliki poza programem Visual Studio, może to powodować problemy ze spójnością, które wyglądają tak, jak widzisz.
źródło
Niestety, w TFS 2008 musi być jeden lub więcej błędów, ponieważ ten problem regularnie pojawia się na maszynach deweloperskich i buduję serwery, na których również pracuję.
Mogę pobrać najnowsze, widzę na liście historii projektu, że zostały zatwierdzone po ostatnim wykonaniu polecenia Pobierz najnowsze, w żaden sposób nie dotykałem plików na dysku, ale po tym, jak funkcja „Pobierz najnowsze” ma zakończone, kiedy sprawdzam kartę TFS, niektóre pliki nadal zawierają komunikat, że nie są najnowszą wersją.
Oczywiście TFS jest w stanie określić, czy lokalnie mam stare pliki, ponieważ lista tak mówi. Jednak Pobierz najnowsze nie uda się tego zrobić, pobierz najnowszą wersję. Jeśli zrobię to, co zrobiłeś, użyj wersji Pobierz konkretną i zaznacz dwa pola wyboru u dołu okna dialogowego, a następnie pliki zostaną pobrane.
Zmieniliśmy nasze serwery kompilacji, aby zawsze korzystały z funkcji typu Pobierz konkretną wersję, więc ta część teraz działa, ale ponieważ nasz serwer kompilacji (TeamCity) również polega na sprawdzaniu, czy nastąpiły zmiany w plikach w celu rozpoczęcia kompilacji , czasami przechodzi w tryb „nic się nie zmieniło, nic tu nie widać, przejdź dalej” i nic nie robi, dopóki na siłę nie uruchomimy konfiguracji kompilacji.
Zauważ, że napotkałem ten problem na maszynie, której nigdy nie dotykano, z wyjątkiem pobierania najnowszej + kompilacji, obie ręcznie, więc nic nie manipuluje plikami. To tylko pomieszanie TFS.
Kiedyś to się pojawiło, sprawdziłem, że pliki na dysku są rzeczywiście binarnie identyczne z wersją pobraną wcześniej, więc nie dokonano ręcznego manipulowania plikami.
Ponadto nie widzę, jak TFS może „wiedzieć”, czy pliki na dysku uległy zmianie, czy nie, bez faktycznego przeglądania zawartości. Jeśli jedna część TFS widzi, że pliki rzeczywiście nie są najnowszą wersją, wówczas wersja Pobierz najnowszą powinna absolutnie mieć możliwość uzyskania najnowszej wersji. To w odniesieniu do komentarzy do innych odpowiedzi tutaj.
źródło
Może tak być, ponieważ logujesz się do TFS jako ten sam użytkownik, a nazwa obszaru roboczego (domyślnie oparta na nazwie komputera) jest również taka sama, więc TFS uważa, że jesteś na tym samym komputerze i tym samym obszarze roboczym, więc masz już najnowszą wersję pliki, więc nie dostanie ich za Ciebie.
spróbuj zmienić nazwę swojego komputera i utwórz nowy obszar roboczy jako nowy komputer.
źródło
Miałem ten sam problem z Visual Studio 2012. Niezależnie od tego, co zrobiłem, kod nie został pobrany z kontroli źródła TFS.
W moim przypadku przyczyną było mapowanie folderu + podfolderu z kontroli źródła oddzielnie, ale do tego samego drzewa w moim lokalnym HD.
Rozwiązaniem było usunięcie mapowania podfolderów za pomocą okna „Zarządzaj obszarami roboczymi”.
źródło
Większość problemów, które widziałem u deweloperów, którzy narzekają, że Pobierz najnowsze nie robi tego, czego oczekują, wynika z faktu, że wykonują oni polecenie Pobierz najnowsze z Eksploratora rozwiązań, a nie z Eksploratora kontroli źródła. Eksplorator rozwiązań pobiera tylko pliki, które są częścią rozwiązania i ignoruje wszystko, co może być wymagane przez pliki w rozwiązaniu, a zatem część kontroli źródła, podczas gdy Eksplorator kontroli źródła porównuje lokalny obszar roboczy z repozytorium na serwerze, aby określić, które pliki są potrzebne.
źródło
Kiedy napotkam ten problem z nie pobieraniem najnowszej i niezgodnymi wersjami, najpierw wykonuję polecenie „Pobierz określoną wersję”, ustawiam zestaw zmian i wstawiam 1. Spowoduje to usunięcie wszystkich plików z lokalnego obszaru roboczego (dla tego projektu, folderu, plik itp.), a także będzie mieć aktualizację TFS, dzięki czemu będzie wiedział, że nie masz teraz POBRANEJ WERSJI. Możesz wtedy zrobić „Pobierz najnowsze” i altówkę, tak naprawdę będziesz mieć najnowsze
źródło
Może się to zdarzyć, gdy używasz TFS z dwóch różnych komputerów z tym samym kontem, jeśli tak, powinieneś porównać, aby zobaczyć zmienione pliki i sprawdzić je, a następnie uzyskać najnowsze, a następnie cofnąć oczekujące zmiany, aby usunąć wyewidencjonowanie
źródło
To zadziałało dla mnie:
1. Zamknij program Visual Studio
2. Otwórz okno poleceń i przejdź do folderu: „% localappdata% \ Local \ Microsoft \ Team Foundation \”
3. Przejdź do podfolderów każdej wersji i usuń podfolder „Pamięć podręczna” i jej zawartość
4. Uruchom ponownie program Visual Studio i połącz się z TFS.
5. Przetestuj Pobierz najnowszą wersję.
źródło
chcę tylko dodać TFS MSBuild nie obsługuje znaków specjalnych w folderach, np. „@”
W przeszłości doświadczyłem, że jeden z naszych folderów projektu nosi nazwę External @ Project1
utworzyliśmy definicję kompilacji TFS, aby uruchomić niestandardowy plik msbuild, a następnie folder obszaru roboczego nie otrzymuje żadnej zawartości z folderu External @ Project1 podczas pobierania najnowszej przestrzeni roboczej. Wygląda na to, że tfs get nie działa, ale nie wyświetla żadnego błędu.
po kilku próbach i błędach i zmianie nazwy folderu na _Project1. voila, mamy pliki w folderze (_Project1).
źródło
Narzędzie: TFS Power Tools
Źródło: http://dennymichael.net/2013/03/19/tfs-scorch/
Polecenie: tfpt scorch / recursive / deletes C: \ LocationOfWorkspaceOrFolder
Spowoduje to wyświetlenie okna dialogowego z prośbą o usunięcie lub pobranie listy plików. Wybierz lub usuń zaznaczenie plików odpowiednio i naciśnij OK. Wygląd w siatce (CheckBox, FileName, FileAction, FilePath)
Przyczyna: TFS będzie porównywać tylko z elementami w obszarze roboczym. Jeśli zmiany zostały wprowadzone poza obszarem roboczym, TFS nie będzie o nich wiedział.
Mam nadzieję, że ktoś uzna to za przydatne. Znalazłem ten post po usunięciu kilku folderów w różnych lokalizacjach. Nie pamiętając, które foldery usunąłem, wykluczono zwykłą opcję Wymuś pobranie / zamianę, której bym użył.
źródło
W moim przypadku Pobierz określoną wersję, nawet zaznaczenie obu pól wyboru i cofnięcie wszystkich oczekujących zmian nie zadziałało.
Sprawdziłem miejsca pracy. Edytuj bieżący obszar roboczy. Sprawdź wszystkie ścieżki. Ścieżka rozwiązania była niepoprawna i wskazywała na usunięty folder.
Naprawiono ścieżkę i najnowsze działa dobrze.
źródło
Kliknij prawym przyciskiem myszy: Zaawansowane> Uzyskaj określoną wersję . Wybierz „Letest Version” i teraz, ważne, zaznacz dwie kontrole:
Kontrole są następujące:
Zastąp pliki z możliwością zapisu, które nie są zaznaczone
Zastąp wszystkie pliki, nawet jeśli lokalna wersja jest zgodna z określoną wersją
źródło