Jak umożliwić TFS 2010 wykrywanie zmian wprowadzonych w plikach poza programem Visual Studio?

118

Używam Team Foundation Server 2010 z programem Visual Studio 2010.

Za każdym razem, gdy modyfikuję plik poza programem Visual Studio, TFS nie wydaje się wykrywać zmiany dokonanej w pliku, a zatem nie oferuje mi opcji wpisania pliku po jego zmodyfikowaniu.

Jak można to rozwiązać?

asmo
źródło
18
Subversion lub Git (a może i inni) porównują skróty plików zamiast API, aby pobrać / wyrejestrować plik. O wiele prostsze i mniej ryzykowne!
Steve B
8
gorzej TFS nawet nie zauważył, że zmieniony plik musi zostać wpisany, więc często można o nim zapomnieć ... dopóki kolega nie sprawdzi tego i nie zorientuje się, że kod nie kompiluje się lub nie działa. Nic dziwnego, że ludzie mówią, że TFS to „VSS na sterydach” - lepiej, ale wciąż ma wiele problemów z VSS.
gbjbaanb
To VSS na sterydach, w taki sam sposób, w jaki sterydy niszczą twoje ciało.
Ian Kemp

Odpowiedzi:

48

Jeśli masz połączenie sieciowe z serwerem podczas pracy poza programem Visual Studio, prawdopodobnie najlepiej jest sprawdzić plik przed jego edycją, używając klienta wiersza poleceń tf lub integracji powłoki Eksploratora Windows, która jest dostępne w wersji TFS Power Tools . (Ponadto coraz więcej innych narzędzi ma integrację z TFS, która sprawia, że ​​jest to automatyczne, ale jeśli używasz tylko notatnika, nadal musi to być krok ręczny).

Oczywiście wiele razy pracujesz i nie masz dostępnego połączenia sieciowego, które umożliwia pobranie plików.

Jeśli wiesz, jakie pliki zmodyfikowałeś, możesz je po prostu sprawdzić w programie Visual Studio, a następnie będziesz mógł je ponownie sprawdzić.

Jeśli nie wiesz, jakie pliki edytowałeś, możesz wykryć zmiany, uruchamiając tfpt onlinepolecenie (również część wersji Power Tools). Spowoduje to zlokalizowanie plików, które zostały zmodyfikowane lokalnie i pobranie tych plików z serwera.

Edwarda Thomsona
źródło
Wydaje się, że program Visual Studio nie wykrywa zmian w plikach, po prostu je sprawdzając. Po prostu próbowałem sprawdzić folder i zawartość pojawiła się w oczekujących zmianach jako edycje. Następnie usunąłem folder w Eksploratorze plików i odświeżyłem oczekujące zmiany, ale program Visual Studio nie powiedział, że pliki zostały usunięte w oczekujących zmianach. Ponadto pliki były nadal obecne w Eksploratorze rozwiązań.
Kyle Delaney,
160

TFS ma do tego polecenie „Uzgodnij”:

  1. Otwórz Eksplorator kontroli źródła
  2. Kliknij prawym przyciskiem myszy folder ze zmianami i wybierz Porównaj
  3. Wybierz pliki, które chcesz uzgodnić (naciśnij CTRL+, Aaby wybrać wszystkie pliki)
  4. Kliknij przycisk Uzgodnij
  5. Ustaw opcje w oknie dialogowym Uzgodnij różnice folderów . Upewnij się, że opcja Pliki, które nie mają oczekujących zmian, jest ustawiona na Wypisz
  6. Kliknij OK
  7. Jeśli masz lokalne zmiany, zostanie wyświetlone okno dialogowe Wypisz . Ustaw preferowany typ blokady
  8. Kliknij Wypisz

Uzgodnij różnice między folderami

Zobacz też: Uzgadnianie różnic między folderami

mhu
źródło
13
To najlepsza odpowiedź, ponieważ nie wymaga wiersza poleceń ani ryzykownego „Cofnij oczekujące zmiany”.
NickH
4
Uratowałem mój dzień! Dokładnie podążałem za Twoimi krokami i działało dokładnie tak, jak oczekiwałem. :-)
Gilad Barner
4
Pracował zgodnie z opisem. Powinna być najlepszą odpowiedzią.
Nicolas
Niestety, robiąc to w całym moim projekcie, pojawia się błąd . Podana ścieżka, nazwa pliku lub oba są za długie. W pełni kwalifikowana nazwa musi mieć mniej niż 260 znaków, a nazwa katalogu - mniej niż 248 znaków. Wybieranie poszczególnych folderów nie jest dla mnie opcją, ponieważ nie pamiętam wszystkich katalogów plików, które zmieniłem. Dowolny pomysł?
kraftwer1
2
Działa idealnie w VS 2015 Update 3, wielkie dzięki. Powinna być najlepszą odpowiedzią, bez trudnych poleceń, aby to
zadziałało
35

To zadziałało dla mnie, używając narzędzi TFS Power:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(gdzie nazwa-katalogu to ścieżka do katalogu, który ma zostać zaktualizowany, w przeciwnym razie wykryje zmiany w całym repozytorium TFS)

Jeśli chcesz wiedzieć, co by się stało, gdyby faktycznie nie wprowadzał żadnych zmian, możesz zmusić go do wykonania testu na sucho, dodając /previewprzełącznik.

Adam Batkin
źródło
Dzięki za wskazówkę @Adam Batkin. Pracowałem jak urok, a teraz jestem naprawiony! +1
iOnline247
9
Uwaga, ten wiersz poleceń będzie zawierał również niechciane pliki: * .user, BIN \, obj, itp ...
Steve B
1
Pozdrawiam, szukałem sposobu z wiersza poleceń, abym mógł zautomatyzować aktualizację TFS firmy z mojego lokalnego repozytorium Git!
Mark K Cowan
2
@SteveB jest /exclude:fld_name/*,filenameprzełącznik, który może być użyty do wykluczania niechcianych plików .. który bardzo mnie zatrzymał
Kresimir Pendic
1
tfpt online /deletes /noprompt /recursive directory-nameUruchamiam się w ten sposób i mam tysiące plików do „zmiany”, więc muszę cofnąć. Ale nigdy ich nie dotknąłem, tylko usunięty folder.
Dzmitry Lahoda
16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Przetestowałem to obejście na gałęzi i bardzo mi pomogło. Ale są tylko nowe pliki i nowy folder, który trzeba zrobić ręcznie.

Zalecam utworzenie oddziału przed operacją. Wyodrębnia czas operacji.

Uwaga: ta technika wykonuje również identyczne czyszczenie plików, które TFS zawsze oznacza jako zmodyfikowane.

hugbe8
źródło
3
To naprawdę powinien być komentarz do wpisu algi , a nie nowa odpowiedź. W każdym razie odradzałbym to robić z tego samego powodu, dla którego odradzałem, gdy alga zasugerowała to powyżej.
Edward Thomson
Całkowicie genialne! Dokładnie to, czego szukałem (po tym, jak nasza firma przeniosła nasz serwer TFS, a TFS / VS2010 był przez to zaskoczony). Teraz właśnie wyewidencjonowałem moje edytowane pliki. Dzięki!
Mike Gledhill,
To działa, ale państwa członkowskie powinny zapewnić lepsze sposoby, aby to zrobić. Linia poleceń i hacki nie powinny być konieczne w przypadku dobrego produktu (zwłaszcza jeśli jest osadzony w VS). SVN i Mercurial robią to dla zabawy ...
user2173353
Zamiast punktu 4 możesz użyć tfpt uu stackoverflow.com/a/544285/10245
Tim Abell
To po prostu cofa to, co zrobiłeś. Nie uświadamia programowi Visual Studio tego, co zrobiłeś.
Kyle Delaney,
7

Spróbuj tego. To jakieś obejście, ale działa:

  1. wprowadzać zmiany poza programem Visual Studio
  2. przejdź do programu Visual Studio i otwórz Eksplorator kontroli źródła
  3. kliknij folder prawym przyciskiem myszy> „Wypisz do edycji” > „Wypisz”
  4. kliknij prawym przyciskiem myszy ten sam folder> „Cofnij oczekujące zmiany ...” > „Cofnij zmiany” > „ Nie dla wszystkich

Otóż ​​to. Zmiany są teraz widoczne.

Alexander G.
źródło
3
Naprawdę odradzałbym to - moim największym zmartwieniem byłoby to, że będę palcami grubymi palcami i przypadkowo cofnę wszystkie moje uzasadnione zmiany. Ponadto sprawdzasz wszystkie pliki, które w zależności od konfiguracji klienta i serwera prawdopodobnie zablokują niektóre lub możliwe wszystkie pliki i mogą uzyskać najnowsze informacje na temat sprawdzania, co z pewnością może być denerwujące.
Edward Thomson
1
To po prostu cofa to, co zrobiłeś. Nie uświadamia programowi Visual Studio tego, co zrobiłeś.
Kyle Delaney,
A jeśli utworzyłeś lub dodałeś nowe elementy, w tej sesji: Gone baby, gone!
Christian
4

Istnieje również inne rozwiązanie umożliwiające TFS, aby dowiedzieć się, które pliki uległy zmianie poza programem Visual Studio:

  1. Otwórz rozwiązanie w trybie offline
  2. W Eksploratorze rozwiązań wybierz plik rozwiązania, a następnie naciśnij przycisk Przejdź do trybu online ( Ikona przycisku GoOnline)

TFS automatycznie przeskanuje rozwiązanie w poszukiwaniu zmian.

Pierwszy krok można osiągnąć na wiele różnych sposobów. Oto kilka:

  • Użyj rozszerzenia GoOffline - bardzo proste i skuteczne.
  • Jeśli zostaniesz poproszony o podanie poświadczeń TFS podczas otwierania rozwiązania (bez automatycznego uwierzytelniania domeny), nie wprowadzaj poświadczeń. Rozwiązanie otworzy się offline i zalogujesz się po naciśnięciu przycisku Go Online
  • (rozwiązanie ekstremalne) Odłącz kabel sieciowy; Otwórz rozwiązanie; Podłącz kabel sieciowy.
Cristian Lupascu
źródło
3

Visual Sourcesafe również działa w ten sposób, a sposób, w jaki dostaję VSS lub TFS, aby zauważyć zmianę, polega na sprawdzeniu pliku w programie Visual Studio.

CheckRaise
źródło
1

Otwórz kontrolę źródła i przejdź do folderu TFS. Kliknij folder prawym przyciskiem myszy i wybierz opcję „Porównaj”.

Zwróć uwagę, że edytowane pliki są oznaczone na czerwono.

Uważam, że jest to lepsze niż to, tfpt onlinektóre zapewnia również pliki, które nie są tylko do odczytu i nie są edytowane.

user2572682
źródło
1

Miałem ten problem w przeszłości, kiedy mój Internet był wyłączony i pracowałem w trybie offline, a większość moich zmian nie pojawiła się w Team Explorer.

Następujące kroki: Po pierwsze, w Solution Explorer, wybierz folder, który chcesz, aby ponownie pogodzić (dla mnie, to był mój cały folder roztwór) i wybierz Porównać ... wprowadź opis obrazu tutaj Kliknij Modyfikuj Filter , aw filtra o tekst pole, możesz wpisać:

*.cs;!obj\;!bin\;!packages\;

W tym przykładzie uwzględni w wyszukiwaniu tylko pliki C # i wykluczy w folderach: bin, obj i packages.

Zwróć uwagę, że kolumna Oczekująca zmiana zawiera informacje, czy plik jest oznaczony jako edycja, dodawanie itp ... lub nic ...

  • Aby oznaczyć jako edycję (gdy element lokalny ma pasujący element na serwerze), zaznacz plik i wybierz opcję Wyrejestruj do edycji ...
  • Aby oznaczyć jako dodany (gdy element lokalny nie ma żadnego elementu serwera), zaznacz plik i wybierz opcję Dodaj pliki

Wreszcie nie jestem pewien, dlaczego projekty nie są tutaj wymienione (po usunięciu filtra * .cs nadal się nie wyświetla), więc przebuduj rozwiązanie, aby upewnić się, że projekty również się zaktualizują

+ W rozwiązaniu kliknij przycisk Połącz (jeśli się pojawi), który mówi Przejdź do trybu online .

Jaider
źródło
0

Odkryłem, że w programie Visual Studio 2015, gdy projekt jest otwarty, Visual Studio sam odkrył, że pliki zostały zmodyfikowane zewnętrznie i automatycznie je sprawdził bez konieczności wykonywania jakichkolwiek czynności. Wpisanie do projektu w normalny sposób zapisało zewnętrzne modyfikacje.

Graham Laight
źródło
0

W moim przypadku zadziałało (przynajmniej raz próbowałem):

  1. Przejdź do panelu Oczekujące zmiany
  2. Wybierz opcję Wyświetl opcje w obszarze Zmiany uwzględnione lub wykluczone.
  3. Przełączaj się między Pokaż wszystko i Pokaż zmiany rozwiązań
  4. W razie potrzeby przełącz się z powrotem

Odśwież zmiany TFS

Wydaje się, że zmiana opcji widoku wymusza odświeżenie zmodyfikowanych plików.

szorstki
źródło