Jak zignorować pliki / katalogi w TFS, aby uniknąć przechodzenia do centralnego repozytorium źródłowego?

254

Czy możliwe jest skonfigurowanie plików / folderów do ignorowania dla poszczególnych projektów w kontroli źródła TFS?

Na przykład mam witrynę z folderem zasobów, do którego nie chcę wchodzić w celu kontroli źródła. Aktywa te są utrzymywane przez oddzielny system. Nie chcę też poddawać kontroli nad źródłami kilku gigabajtów zasobów, ale potrzebuję kilku próbek na mojej maszynie programistycznej, ale nie chcę ich sprawdzać.

Jeśli pracuję nad tą witryną podczas kontroli źródła i odświeżę drzewo, pliki te zostaną automatycznie dodane ponownie

Chcę temu zapobiec.

Dave
źródło
1
Do lokalnych obszarów roboczych możesz użyć .tfignore -Files, jak wskazuje Richard Banks. Aby dopasować ten plik za pomocą Context-Menue w team-Explorerer, zobacz moją odpowiedź. Dla obszarów roboczych serwera podałem link w komentarzach.
gReX

Odpowiedzi:

88

Dla VS2015 i VS2017

Współpracuje z TFS (na miejscu) lub VSO (Visual Studio Online - oferta hostowana na platformie Azure)

Dokumentacja NuGet zawiera instrukcje, jak to osiągnąć, a ja po prostu pomyślnie je śledziłem w programie Visual Studio 2015 i Visual Studio 2017 przeciwko VSTS (TFS hostowany na platformie Azure). Wszystko jest w pełni zaktualizowane od listopada 2016 sierpnia 2018.

Polecam postępować zgodnie z instrukcjami NuGet, ale podsumowując to, co zrobiłem:

  1. Upewnij się, że packagesfolder nie jest przypisany do TFS. Jeśli tak, to stamtąd.
  2. Wszystko, co tworzymy poniżej, znajduje się w tym samym folderze, w którym znajduje się Twój .slnplik, chyba że określono inaczej (instrukcje NuGet nie są do końca jasne).
  3. Utwórz .nugetfolder. Możesz użyć Eksploratora Windows, aby nazwać go .nuget., aby pomyślnie zapisać jako .nuget(automatycznie usuwa ostatni okres), ale bezpośrednia próba nazwania go .nugetmoże nie działać (może pojawić się błąd lub może zmienić nazwę, w zależności od wersji systemu Windows ). Lub nazwij nuget katalogu i otwórz katalog nadrzędny w wierszu polecenia. rodzaj. ren nuget .nuget
  4. Wewnątrz tego folderu utwórz NuGet.configplik, dodaj następującą zawartość i zapisz:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Wróć do .slnfolderu i utwórz nowy plik tekstowy i nazwij go .tfignore(jeśli używasz Eksploratora Windows, użyj tej samej sztuczki jak powyżej i nazwij go .tfignore.)
  2. Umieść następującą treść w tym pliku:

.tfignore:

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it's 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets
  1. Zapisz to wszystko, przekaż to do TFS, a następnie zamknij i ponownie otwórz Visual Studio, a Team Explorer nie powinien już identyfikować folderu pakietów jako oczekującego na odprawę.
  2. Skopiuj / wklej za pomocą Eksploratora Windows .tfignoreplik i .nugetfolder do wszystkich moich różnych rozwiązań i zatwierdziłem je, a packagesfolder nie próbuje już wkraść się do mojego repozytorium kontroli źródła!

Dalsza personalizacja

Chociaż nie mój, uważam, że ten .tfignoreszablon autorstwa sirkirby jest przydatny. Przykład w mojej odpowiedzi obejmuje packagesfolder Nuget, ale ten szablon zawiera kilka innych rzeczy, a także zawiera dodatkowe przykłady, które mogą być przydatne, jeśli chcesz to jeszcze bardziej dostosować.

Jaxidian
źródło
1
Śledziłem to na VS 2017 - TFS 2015. Działało jak urok. Wszystkie moje pakiety Nuget nie były już wyświetlane jako oczekujące zmiany.
James Walsh Jr
Musiałem tylko otworzyć wykryte zmiany i ręcznie dodać nowo utworzone pliki do oczekujących zmian. Tyle że wszystko działało dobrze.
Machado
To mi nie zadziałało. VS 2017 - TFS 2015. Nie mogę niczego zarejestrować. Podczas próby pojawia się następujący błąd: „D: \ Src \ MiniCoreWebAPI \ packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: Nie można znaleźć części ścieżki ”
Rod
Nie miałem zameldowanego folderu pakietów, ale został on już wykryty jako oczekująca zmiana. Po zastosowaniu tych instrukcji musiałem „cofnąć oczekujące zmiany” w folderze pakietów, a potem wszystko było w porządku, kiedy przebudowałem i NuGet przywrócił pakiety.
CodeHxr
172

Jeśli korzystasz z lokalnych obszarów roboczych (TFS 2012+), możesz teraz użyć tego .tfignorepliku, aby wykluczyć lokalne foldery i pliki z odprawy.

Jeśli dodasz ten plik do kontroli źródła, możesz upewnić się, że inni w twoim zespole korzystają z tych samych ustawień wykluczania.

Pełne informacje na temat MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Dla leniwych:

Możesz skonfigurować, które rodzaje plików są ignorowane, umieszczając plik tekstowy wywoływany .tfignorew folderze, w którym chcesz zastosować reguły. Efekty .tfignorepliku są rekurencyjne. Można jednak utworzyć pliki .tfignore w podfolderach, aby zastąpić efekty .tfignore pliku w folderze nadrzędnym.

Do pliku .tfignore obowiązują następujące reguły:

  • # rozpoczyna linię komentarza
  • * I? obsługiwane są symbole wieloznaczne.
  • Specyfika pliku jest rekurencyjna, chyba że poprzedza go znak \.
  • ! neguje specyfikację pliku (pliki pasujące do wzorca nie są ignorowane)

Przykładowy plik:

# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll
Richard Banks
źródło
35
próbowałem to zrobić. jedyną rzeczą, która zostaje zignorowana, jest zawartość pliku .tfignore :(
user1852503
15
@SerjSagan mój komputer nie pozwolił mi tworzyć, .tfignorewięc utworzyłem .tfignore.i sam usunąłem ostatnią kropkę ..
Peter
5
Problem polega na tym, że ignoruje tylko zasoby, które 1) zostały jawnie usunięte w oknie Eksploratora kontroli źródła przed zameldowaniem i 2) wyraźnie wyłączone w oknie Oczekujące zmiany . Na przykład, jeśli zamierzasz użyć go do zignorowania folderu pakietów i polegać na Przywracaniu pakietów NuGet, musisz 1) usunąć folder pakietów w Eksploratorze sterowania źródłami, a następnie 2) wykluczyć go w oknie Oczekujące zmiany po procesie przywracania pakietów NuGet . W przeciwnym razie nadal będzie sprawdzać folder paczek .
Deilan
1
Jeśli system Windows nie zezwoli na utworzenie .tfignorepliku z powodu braku właściwej nazwy, możesz go utworzyć lub zmienić nazwę za pomocą okna wiersza polecenia.
Zarepheth
1
Istnieje pewien poważny problem z .tfignore w VS2015. Ludzie są bardzo niezadowoleni , ale wydaje się, że nie ma wyraźnego stwierdzenia problemu ani wyraźnego zobowiązania do jego rozwiązania.
bbsimonbb
71

To nie wydawać się nieco kłopotliwe do ignorowania pliki (i foldery) w Team Foundation Server. Znalazłem kilka sposobów, aby to zrobić (za pomocą TFS / Team Explorer / Visual Studio 2008). Te metody działają również z typem projektu ASP strony internetowej.

Jednym ze sposobów jest dodanie nowego lub istniejącego elementu do projektu (np. Kliknij prawym przyciskiem myszy projekt, Dodaj istniejący element lub przeciągnij i upuść z Eksploratora Windows do eksploratora rozwiązań), pozwól TFS przetworzyć plik (i) lub folder, a następnie cofnij czekanie zmiany na przedmiotach. TFS odznaczy je jako oczekujące na dodanie zmiany, a pliki będą spokojnie siedzieć w projekcie i pozostaną poza TFS.

Innym sposobem jest użycie polecenia Dodaj elementy do folderu w Eksploratorze sterowania źródłami. Spowoduje to uruchomienie małego kreatora i na jednym z kroków możesz wybrać elementy do wykluczenia (chociaż myślę, że musisz dodać co najmniej jeden element do TFS za pomocą tej metody, aby kreator mógł kontynuować).

Możesz nawet dodać niedozwolone wzorce rejestracji (w sekcji Zespół -> Ustawienia projektu zespołu -> Kontrola źródła ... -> Zasady odprawy), aby uniemożliwić innym osobom w zespole omyłkowe sprawdzenie niektórych zasobów.

Derek Morrison
źródło
7
Nie miałem zakazanej polityki wzorów. Odpowiedź na powiązane pytanie ujawnia, gdzie je zdobyć. Najwyraźniej jest to część narzędzi elektrycznych TFS .
Leif Carlsen,
1
Mam do czynienia z podobnym problemem. Czy możesz podać więcej szczegółów na temat konkretnego folderu, który nie ma się zameldować, korzystając z zasad meldowania się
Imran Rizvi,
Ups - masz rację, Leif. Jest częścią elektronarzędzi TFS.
Derek Morrison
Imran, niestety zmieniłem zadania i nie korzystam już z TFS i nie mam dostępu do moich wcześniejszych projektów, więc nie jestem pewien co do składni zasad sprawdzania zakazanych wzorców. Może to pytanie pomaga? stackoverflow.com/questions/2741412/...
Derek Morrison
TFS 2010 Po wybraniu plików do uwzględnienia możesz wykluczyć z tej listy. Nie można dotknąć istniejących plików ...
JNF
47

W przypadku TFS 2013 :

Uruchom w VisualStudio - Team Explorer , w oknie dialogowym PendingChanges cofnij zmiany ze stanem [dodaj], które należy zignorować.

Visual Studio ponownie wykryje Add (s). Kliknij „Wykryto: x dodaj (y)” - w Wykluczone zmiany

W otwartym oknie „Promuj zmiany kadidate” można łatwo wykluczyć pliki i foldery za pomocą menu kontekstowego. Dostępne są następujące opcje:

  • Zignoruj ​​ten element
  • Zignoruj ​​według rozszerzenia
  • Zignoruj ​​według nazwy pliku
  • Ignoruj ​​przez ffolder (tak ffolder, TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

Nie zapomnij wpisać zmienionego pliku .tfignore.

Dla VS 2015/2017 :

Ta sama procedura: na karcie „Wykluczone zmiany” w TeamExplorer \ Oczekujące zmiany kliknij Wykryto: xxx dodaj (y)

Karta Wykluczone zmiany w TeamExplorer \ Oczekujące zmiany

Zostanie otwarte okno dialogowe „Promuj zmiany kandydata”, a na pozycjach można kliknąć prawym przyciskiem myszy menu kontekstowe. Literówka jest teraz naprawiona :-)

gReX
źródło
Nie mogę znaleźć tej opcji. Jestem na VS 2015 RC.
Shimmy Weitzhandler
zadziała to tylko wtedy, gdy pracujesz z lokalnym obszarem roboczym, jak opisano szczegółowo tutaj: msdn.microsoft.com/library/vstudio/…
stvn
@Shimmy: Procedura w VS 2015 RC jest taka sama, z wciąż tą samą literówką. Zobacz moją zaktualizowaną odpowiedź. Ale jak wskazuje stvn. .Tfignore działa tylko z lokalnymi przestrzeniami roboczymi. W przypadku obszarów roboczych serwera musisz cofnąć opcję Uwzględnij w czekach oczekujących, zobacz odpowiedź tutaj: stackoverflow.com/questions/21887308/…
gReX
@Shimmy: Czy masz połączenie z TFS-Server 2015? Upewnij się, że zaczynasz od Team Explorera w VS
gReX
@ qw1564 Jestem całkiem pewien, że kiedy pytanie zostało zadane jako pierwsze, nie było to możliwe. Ale teraz to odpowiedź, którą wybrałbym. Dzięki za kredyty!
gReX,
5

Znalazłem idealny sposób na ignorowanie plików w TFS, tak jak robi to SVN.
Przede wszystkim wybierz plik, który chcesz zignorować (np. Web.config).
Teraz przejdź do karty menu i wybierz:

Kontrola pliku> Zaawansowane> Wyklucz plik web.config z kontroli źródła

... i boom; twój plik jest trwale wykluczony z kontroli źródła.

Bharat
źródło
1
to działa dla mnie na TFS 2010 dla plików generowanych przez kod. DZIĘKI!
BozoJoe
1
To faktycznie działa, .tfignore nie działa dla mnie. Dzięki tonie
EpicKip
2
Nie mam tej opcji w VS 2018
Adam
4

Zakładam, że korzystasz z projektów witryn sieci Web. Te automatycznie przeszukują katalog projektu i przekazują wszystko do kontroli źródła. Nie ma sposobu, aby ich zatrzymać.

Nie rozpaczajcie jednak. Projekty aplikacji internetowych nie wykazują tego dziwnego i raczej nieoczekiwanego (imho: moronic) zachowania. WAP jest dodatkiem do VS2005 i jest dostarczany bezpośrednio z VS2008.

Alternatywą dla zmiany projektów na WAP może być przeniesienie folderu Zasoby poza kontrolę źródła do biblioteki dokumentów TFS. Rób to tylko JEŻELI sam projekt nie korzysta bezpośrednio z plików zasobów.

Nie ja
źródło
tak, twoje założenie jest prawidłowe. Myślałem, że tak będzie, chciałem tylko mieć podwójną pewność, że niczego nie przegapiłem.
Dave