Jak wykluczyć określony plik z kontroli źródła TFS

89

Mamy wiele plików konfiguracyjnych (app.DEV.config, app.TEST.config itp.) Oraz zdarzenie przed kompilacją, które kopiuje prawidłowy plik konfiguracyjny do app.config. Oczywiście pliki specyficzne dla konfiguracji znajdują się w kontroli źródła - ale w tej chwili tak jest App.Config, a tak nie powinno być.

Jak mogę oznaczyć ten jeden plik jako wykluczony z kontroli źródła, ale oczywiście nie z projektu.

Używam VS 2005 i 2005 Team Explorer.

Ralph Shillington
źródło

Odpowiedzi:

39

W MS Power Tools istnieje polityka sprawdzania (Forbidden Patterns Policy), która umożliwia porównywanie nazw plików z wyrażeniami regularnymi. Zobacz: Microsoft Team Foundation Server Power Tools

Chociaż zasady meldowania się nie są całkowicie niezawodne, są one najbliższą rzeczą, jaką TFS ma do egzekwowania reguł zdefiniowanych przez użytkownika, takich jak to, czego szukasz.

(Jak powiedzieli inni, możesz również zamaskować plik lub folder, co oznacza, że ​​pozostaje on w kontroli źródła i jest widoczny dla wszystkich pozostałych członków zespołu, ale nie jest kopiowany na komputer, dopóki nie zdecydujesz się go odkryć; lub ty może usunąć plik, co oznacza, że ​​zostanie on usunięty z komputerów wszystkich użytkowników, gdy otrzymają najnowszą wersję - ale żadna z tych opcji nie zapobiegnie dodaniu takich plików do kontroli źródła)

Jason Williams
źródło
1
Niestety, funkcja wykluczania całego projektu zespołowego, którą opisujesz, nie istnieje w TFS. (chyba że jest to nowsza wersja z 2010 roku niż moja) Okno dialogowe „Typy plików kontroli źródła” kontroluje, które typy plików nie są scalalne, tj. są zablokowane na wyłączność.
Richard Berg
Mam VSTS2005 / 2008 w pracy, ale piszę to w domu, więc moja odpowiedź była z mojej raczej kiepskiej pamięci - przepraszam! Właśnie zdałem sobie sprawę, że to, czego potrzebujesz, to zasady sprawdzania „zabronionych wzorców” narzędzi TFS Power Tools. Umożliwia to dopasowywanie nazw plików za pomocą wyrażenia regularnego i blokowanie sprawdzania niechcianych nazw plików: msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#checkin
Jason Williams
Dobry telefon, zapomniałem o tej polityce. Zmienię Twój post, aby był widoczny.
Richard Berg,
Jak mogę odblokować jedną gałąź ??? Przez przypadek
ukryłem
95

W TFS2012 łatwo jest utworzyć plik .tfignore

http://msdn.microsoft.com/en-us/library/tfs/ms245454%28v=vs.110%29.aspx#tfignore

######################################
# 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

# EDIT https://msdn.microsoft.com/en-us/library/ms245454(v=vs.110).aspx#tfignore
# A filespec is recursive unless prefixed by the \ character.
artfulhacker
źródło
jak zrobiłbyś cykliczny folder ignorowania pakietów, ale zawierał packages / repositories.config?
Maslow,
@Maslow, jeśli masz, możesz edytować moją odpowiedź. wydaje się być dość powszechnym ustawieniem i powinniśmy umieścić to na przykładzie
artfulhacker,
czy plik .tfignore w katalogu głównym kolekcji projektów automatycznie stosuje się w dół hierarchii, nawet jeśli nie mają tego folderu zamapowanego / pobranego?
Maslow
2
Jest to obsługiwane tylko w przypadku lokalnych obszarów roboczych. msdn.microsoft.com/library/vstudio/…
Sumo
45

Wybierz plik App.config w Eksploratorze rozwiązań i wybierz opcję Plik -> Kontrola źródła -> Wyklucz App.config z kontroli źródła.

PjL
źródło
1
dokładnie to, czego potrzebowałem, aby nie przechowywać moich zminimalizowanych plików.
Valamas,
13
Martwi mnie, że ta opcja nie jest wymieniona w zwykłym menu kontekstowym
Eric Herlitz
6
Nie mam takiej możliwości. : '- (
Jan Aagaard
2
Nie ma go również w Visual Studio 2013 Ultimate :(
Ytrog,
4
Jest obecny (w obszarze Plik> Kontrola źródła> Zaawansowane> Wyklucz plik App.config z kontroli źródła) w moim programie Visual Studio Premium 2013 (wersja 12.0.3023.00 Update 3).
Martin Bäckström
22

Jest opcja, która jest trudna do znalezienia:

1. Wybierz plik lub wiele plików w Eksploratorze rozwiązań

2. Przejdź do Plik -> Kontrola źródła -> Zaawansowane

Ścieżka do wykluczenia

i oto jest

Oto wykluczenie

Pamiętaj: jeśli klikniesz plik prawym przyciskiem myszy w Eksploratorze rozwiązań, znajdziesz tylko „najważniejsze opcje”, a nie wszystkie :)

Felix Keil
źródło
13

Jeśli chcesz tylko mieć plik w projekcie, ale nie pod kontrolą źródła za pomocą TFS, po prostu przejdź do SourceControl, usuń wspomniany plik i cofnij wyewidencjonowanie pliku projektu (spróbuje usunąć plik z projektu jako dobrze). Następnie wprowadź usunięcie pliku, który wykluczasz. W eksploratorze rozwiązań powinieneś zobaczyć, że obok wykluczanego pliku nie ma ikony kontroli źródła. Plik projektu powinien zawierać tam plik, ale ten plik nie powinien już być pod kontrolą źródła.

Pamiętaj, że każda inna osoba zobaczy teraz brakujący plik w projekcie, gdy otrzyma najnowszą wersję.

Seth
źródło
7

TFS umożliwia maskowanie na poziomie folderu / pliku. Kiedy coś jest zamaskowane, TFS nie próbuje tego zsynchronizować (podobnie jak svn: ignore).

Konfigurując obszar roboczy, ukryj wszystko, co ma ignorować TFS. Bardziej szczegółowe instrukcje znajdują się tutaj .

joshua.ewer
źródło
gdyby tylko istniał sposób na ukrycie folderu dla wszystkich obszarów roboczych ... nie widzę żadnego równoważnego ustawienia w obszarze zabezpieczeń.
felickz
Nie możesz maskować na poziomie pliku; tylko folder.
dudeNumber4
@ dudeNumber4 Uważam, że ta funkcja została wyłączona w późniejszych wersjach TFS, długo po napisaniu wstępnej odpowiedzi. Możesz jednak spróbować tego
hacka
5

To zadziałało dla mnie:

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 oczekujące zmiany w pozycji (ach). TFS odznaczy je jako oczekujące zmiany, a pliki zostaną cicho umieszczone w projekcie i pozostaną poza TFS.

Źródło: = "> Jak mogę wykluczyć określone pliki z kontroli źródła TFS

Huilaaja
źródło
2

Visual Studio 2013 (i 2012)

Ta funkcja jest dostępna po wybraniu pliku (i) i przejściu do:

File > Source Control > Advanced > Exclude ... from Source Control
Evan Mulawski
źródło
Nie ma żadnego wykluczenia w 2012 roku.
ExpatEgghead
Nie widzę tego również w 2013 roku
VictorySaber
2

To pytanie zostało zadane jakiś czas temu, ale dotyczy tego samego rodzaju problemu, który miałem.

Problem:

  • Chcemy sprawdzić nasz kod.
  • Następnie chcemy zbudować nasz projekt.
    • Podczas budowania polegamy na wydarzeniach kompilacji, aby przenosić pliki, więc mamy odpowiednie pliki na miejscu, aby proces kompilacji mógł się zakończyć.
  • Kiedy zdarzenie kompilacji próbuje skopiować pliki, otrzymujemy błędy odmowy dostępu.

Powód:

  • Team Foundation Server Visual Studio Plugin zmienia atrybut Tylko do odczytu w naszych plikach na PRAWDA TYLKO DO ODCZYTU, gdy sprawdzamy nasze pliki.

Przykład wydarzenia tworzenia:

  • skopiuj „$ (TargetDir) SomeFile.ext” „$ (ProjectDir)”

Powyżej musimy po prostu przenieść plik z naszej docelowej ścieżki budowania (foldery bin \ debug lub bin \ release) do naszego folderu projektu. W mojej sytuacji było to po to, aby móc dołączyć pliki zbudowane w ramach projektu do mojego instalatora. Mój Instalator nie pobrał ich jako części danych wyjściowych projektu.

Poprawka: (prawie kopnąłem się w twarz, kiedy się zorientowałem)

Nowe wydarzenie kompilacji:

  • attribute -R "$ (ProjectDir) SomeFile.ext"
  • skopiuj „$ (TargetDir) SomeFile.ext” „$ (ProjectDir)”
  • atrybut + R "$ (ProjectDir) SomeFile.ext"

Wszyscy dobrze się bawimy podczas wydarzeń kompilacji, prawda? Powyżej po prostu robię 2 rzeczy, usuwam atrybut tylko do odczytu, teraz pliki nie są tylko do odczytu. Skopiuj mój plik tak, jak chciałem. Następnie zamień atrybut tylko do odczytu (opcjonalny, jak sądzę), aby zapewnić zadowolenie z programu Visual Studio i fundacji zespołu.

I tak ... nadal kopie się w twarz na tym.

Rob K.
źródło
0

Mam podobny problem, moja App.config zawierała sensowne dane (np. Nazwę użytkownika), których te dane nie powinny być synchronizowane z TFS.

Artykuł Najlepsze rozwiązania dotyczące wdrażania haseł i innych poufnych danych w ASP.NET i Azure App Service opisano dobre podejście do zapobiegania temu problemowi:

Użyj atrybutu „file” elementu „appSettings”, aby odwołać się do pliku konfiguracyjnego, który nie jest dodawany do kontroli źródła

thuld
źródło
0

Jeśli masz starszą wersję niż TFS2012 i dlatego nie możesz utworzyć .tfignorepliku lub skorzystać z tej File > Source Control > Advanced > Exclude …opcji, możesz spróbować tego:

  • Utwórz kopię pliku docelowego w Eksploratorze Windows.
  • Cofnij oczekujące zmiany (jeśli istnieją) w pliku docelowym w Team Explorer / Visual Studio.
  • Usuń plik docelowy w Eksploratorze Windows.
  • Przenieś kopię pliku docelowego do lokalizacji usuniętego pliku docelowego i zmień jego nazwę, aby miała taką samą nazwę jak usunięty plik docelowy.

Wydaje się, że TFS ignoruje teraz zmiany w pliku docelowym. Jeśli chcesz ponownie edytować plik, nie używaj programu Visual Studio, ponieważ TFS umieści plik z powrotem na liście plików z oczekującymi zmianami.

Obrońca pierwszy
źródło
0

Możesz po prostu wybrać plik w Eksploratorze kontroli źródła i kliknąć go prawym przyciskiem myszy, a następnie wybrać opcję „Zmień nazwę” i dodać „.exclude” na końcu nazwy pliku.

Następnie pamiętaj, aby zaewidencjonować plik, a potem zobaczysz, że plik został wykluczony z kontroli źródła.

imsummysingh
źródło