중앙 소스 저장소로 이동하지 않도록 TFS에서 파일 / 디렉토리를 무시하는 방법은 무엇입니까?


254

TFS 소스 제어에서 프로젝트별로 무시하도록 파일 / 폴더를 설정할 수 있습니까?

예를 들어, 소스 제어로 가고 싶지 않은 자산 폴더가있는 웹 사이트가 있습니다. 이러한 자산은 별도의 시스템으로 유지 관리됩니다. 또한 소스 제어에 몇 기가 바이트의 자산을 넣고 싶지 않지만 개발자 컴퓨터에 몇 개의 샘플이 필요하지만 어느 쪽도 확인하고 싶지 않습니다.

소스 제어에 바인딩 된 상태에서이 웹 사이트에서 작업하고 트리를 새로 고치면 이러한 파일이 자동으로 다시 추가됩니다.

이 문제가 발생하지 않도록하고 싶습니다.


1
로컬 작업 공간의 경우 Richard Banks와 같은 .tfignore -Files를 사용할 수 있습니다 . team-Explorerer에서 Context-Menue 를 사용하여이 파일을 조정 하려면 내 답변을 참조하십시오. 서버 작업 영역의 경우 주석에 링크를 제공했습니다.
— gReX

답변:


88

VS2015 및 VS2017

TFS (온-프레미스) 또는 VSO (Visual Studio Online-Azure 호스팅 제품)와 호환

NuGet 설명서는 다음을 제공합니다. 이를 수행하는 방법에 지침을 하며 VSTS (Azure-hosted TFS)에 대해 Visual Studio 2015 및 Visual Studio 2017에서 성공적으로 수행했습니다. 모든 것이 2016 년 11 월 2016 년 8 월 현재 완전히 업데이트되었습니다 .

NuGet의 지침을 따르지만 내가 한 일을 요약하면 다음과 같습니다.

  1. 당신의 packages폴더가 TFS에 커밋되지 . 그렇다면, 꺼내십시오.
  2. 우리가 만드는 다른 모든 것은 .sln 달리 지정되지 않는 한 파일이 존재 (NuGet의 지침은 이것에 대해 명확하지 않습니다).
  3. .nuget폴더를 만듭니다 . Windows 탐색기를 사용하여 다른 이름 .nuget.으로 저장하기 위해 이름을 지정할 수 있습니다.nuget 하기 위해 이름을 .nuget지정할 수 있지만 (마지막 기간을 자동으로 제거함) 직접 이름을 지정하려고하면 작동하지 않을 수 있습니다 (Windows 버전에 따라 오류가 발생하거나 이름이 변경 될 수 있음) ). 또는 디렉토리 이름을 nuget으로 지정하고 명령 행 프롬프트에서 상위 디렉토리를여십시오. 유형. ren nuget .nuget
  4. 해당 폴더 안에 NuGet.config파일을 작성 하고 다음 내용을 추가하고 저장하십시오.

NuGet.config :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. .sln폴더로 돌아가서 새 텍스트 파일을 생성하고 이름을 지정하십시오 .tfignore(Windows 탐색기를 사용하는 경우 위와 동일한 트릭을 사용하고 이름을 지정하십시오).tfignore. ).
  2. 다음 내용을 해당 파일에 넣으십시오.

.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. 이 모든 것을 저장하고 TFS에 커밋 한 다음 Visual Studio를 닫았다가 다시 열면 팀 탐색기가 더 이상 패키지 폴더를 보류중인 체크인으로 식별하지 않아야합니다.
  2. Windows 탐색기를 통해 .tfignore파일과 .nuget폴더를 모든 다양한 솔루션에 복사하여 붙여 넣은 후 커밋했으며 더 이상 packages소스 제어 저장소에 몰래 들어 가려는 폴더 가 없습니다 !

추가 사용자 정의

내 것이 아니지만 sirkirby 의이 .tfignore템플릿 이 유용 하다는 것을 알았 습니다. 내 대답의 예제는 Nuget packages폴더를 다루지 만이 템플릿에는 다른 것들이 포함되어 있으며이를 더 사용자 정의하려는 경우 유용한 추가 예제가 있습니다.


1
VS 2017-TFS 2015에서이 작업을 수행했습니다. 매력처럼 작동했습니다. 모든 Nuget 패키지가 더 이상 보류중인 변경 사항으로 표시되지 않았습니다.
— James Walsh Jr 18

방금 감지 된 변경 사항을 열고 새로 만든 파일을 보류중인 변경 사항에 직접 추가해야했습니다. 모든 것이 잘 작동한다는 것을 제외하고.
— Machado

이것은 나를 위해 작동하지 않았습니다. VS 2017-TFS 2015. 체크인 할 수 없습니다. 다음과 같은 오류가 발생합니다. "D : \ Src \ MiniCoreWebAPI \ packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll : 경로의 일부를 찾을 수 없습니다 "
— Rod

패키지 폴더를 체크인하지 않았지만 이미 보류중인 변경으로 감지되었습니다. 이 지침을 적용한 후 패키지 폴더에서 "변경 보류 보류 취소"를 수행해야했는데 다시 빌드하고 NuGet을 사용하면 패키지가 복원되었습니다.
— CodeHxr

172

로컬 작업 공간 (TFS 2012+)을 사용하는 경우 이제 .tfignore파일을 사용하여 로컬 폴더 및 파일을 체크인하지 못하게 할 수 있습니다 .

해당 파일을 소스 제어에 추가하면 팀의 다른 사용자가 동일한 제외 설정을 공유 할 수 있습니다.

MSDN에 대한 자세한 내용-http: //msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

게으른 사람 :

.tfignore규칙을 적용 할 폴더에 텍스트 파일을 배치하여 무시할 파일 종류를 구성 할 수 있습니다 . .tfignore파일 의 효과 는 재귀 적입니다. 그러나 하위 폴더에 .tfignore 파일을 만들어 .tfignore 상위 폴더 에있는 파일 의 효과를 무시할 수 있습니다 .

다음 규칙은 .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

35
나는 그것을 시도했다. 무시되는 유일한 것은 .tfignore 파일의 내용입니다 :(
— user1852503

15
@SerjSagan 내 컴퓨터는 .tfignore내가 만들 수 없어서 내가 만든 .tfignore.마지막 점을 제거했습니다 ..
— Peter

5
문제는 1) 체크인 전에 소스 제어 탐색기 창 에서 명시 적으로 삭제 되고 2) 보류중인 변경 창 에서 명시 적으로 제외 된 자원 만 무시한다는 것 입니다. 예를 들어,이를 사용하여 패키지 폴더 를 무시 하고 NuGet 패키지 복원을 사용하려는 경우 1) 소스 제어 탐색기 에서 패키지 폴더를 삭제 한 다음 2) NuGet 패키지 복원 프로세스 후 보류중인 변경 사항 창 에서 해당 폴더를 제외해야 합니다. . 그렇지 않으면 여전히 패키지 폴더를 체크인 합니다.
— Deilan

1
.tfignore적절한 이름 이 없어 Windows에서 파일 을 만들 수없는 경우 명령 줄 창을 통해 파일을 만들거나 이름을 바꿀 수 있습니다.
— Zarepheth

1
이 몇 가지 큰 문제가 VS2015에서 .tfignore와 함께. 민속은 매우 불행 하지만이 문제에 대한 명확한 진술이나 문제 해결에 대한 명확한 의지가없는 것 같습니다.
— bbsimonbb

71

그것은 않습니다 팀 파운데이션 서버에있는 파일 (및 폴더)를 무시하는 약간의 불편을 보인다. TFS / Team Explorer / Visual Studio 2008을 사용하여 몇 가지 방법을 찾았습니다. 이러한 방법은 웹 사이트 ASP 프로젝트 유형에서도 작동합니다.

한 가지 방법은 프로젝트에 새 항목 또는 기존 항목을 추가하는 것입니다 (예 : 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 기존 항목 추가 또는 Windows 탐색기에서 솔루션 탐색기로 끌어다 놓기). TFS가 파일 또는 폴더를 처리 한 다음 보류 취소 항목의 변경. TFS는 보류중인 추가 변경이있는 것으로 표시하지 않으며 파일은 프로젝트에 조용히 앉아 TFS에서 유지됩니다.

다른 방법은 소스 제어 탐색기의 폴더에 항목 추가 명령을 사용하는 것입니다. 작은 마법사가 시작되고 단계 중 하나에서 제외 할 항목을 선택할 수 있습니다 (마법사가 계속하려면이 방법으로 TFS에 하나 이상의 항목을 추가해야한다고 생각합니다).

금지 된 패턴 체크인 정책 (팀-> 팀 프로젝트 설정-> 소스 제어 ...-> 체크인 정책 아래)을 추가하여 팀의 다른 사람들이 특정 자산을 실수로 체크인하지 못하게 할 수 있습니다.


7
금지 된 패턴 정책이 없었습니다. A와 대답 관련 질문은 어디를 얻는 보여준다. 분명히 TFS Power Tools의 일부입니다 .
— Leif Carlsen

1
비슷한 문제에 직면하고 있습니다. 체크인 정책을 사용하여 체크인하지 않을 특정 폴더에 대한 자세한 정보를 제공 할 수 있습니까?
— Imran Rizvi

으악-네 말이 맞아, 레이프 TFS Power Tools의 일부입니다.
— 데릭 모리슨

불행히도 Imran은 작업을 전환했으며 더 이상 TFS를 사용하지 않고 과거 프로젝트에 액세스 할 수 없으므로 금지 된 패턴 체크인 정책 구문의 구문에 대해 확신이 없습니다. 이 질문이 도움이 되었습니까? stackoverflow.com/questions/2741412/…
— Derek Morrison

TFS 2010 포함 할 파일을 선택한 후 해당 목록에서 제외 할 수 있습니다. 기존 파일을 만질 수 없습니다 ...
— JNF

47

대한 TFS 2013 :

VisualStudio Team Explorer 에서 시작 하여 PendingChanges 대화 상자 에서 [add] 상태로 변경 사항을 실행 취소하십시오. 무시해야합니다.

Visual Studio에서 추가를 다시 감지합니다. 제외 된 변경 사항에서 " 검지 : x 추가 (들)" 를 클릭하십시오 .

열린 "Cadidate Changes 변경"대화 상자에서 상황에 맞는 메뉴를 사용하여 파일 및 폴더를 쉽게 제외 할 수 있습니다. 옵션은 다음과 같습니다.

  • 이 항목을 무시하십시오
  • 확장으로 무시
  • 파일 이름으로 무시
  • ffolder로 무시 (예 ffolder, TFS 2013 업데이트 4 / Visual Studio 2013 Premium 업데이트 4)

변경된 .tfignore-File을 체크인하는 것을 잊지 마십시오.

들어 VS 2,017분의 2,015 :

동일한 절차 : TeamExplorer \ Pending Changes의 "Excluded Changes Tab"에서 Detected : xxx add (s)를 클릭하십시오.

TeamExplorer \ Pending Changes의 Excluded Changes 탭

"후보 변경 사항 변경"대화 상자가 열리고 항목에서 상황에 맞는 메뉴를 마우스 오른쪽 버튼으로 클릭 할 수 있습니다. 오타가 수정되었습니다 :-)


해당 옵션을 찾을 수 없습니다. VS 2015 RC에 있습니다.
— Shimmy Weitzhandler

자세한 내용은 다음과 같이 로컬 작업 영역에서 작업하는 경우에만 작동합니다. msdn.microsoft.com/library/vstudio/…
— stvn

@ Shimmy : VS 2015 RC의 절차는 동일하지만 오타는 동일합니다. 내 업데이트 된 답변을 참조하십시오. 그러나 stvn이 지적했듯이 .tfignore는 로컬 작업 공간에서만 작동합니다. 서버 작업 영역의 경우 보류
— 체크인에

@Shimmy : TFS-Server 2015에 연결되어 있습니까? VS의 팀 탐색기 로 시작하십시오
— gReX

@ qw1564 질문이 먼저 제기되었을 때, 그것은 gui-way가 불가능하다고 확신합니다. 그러나 지금, 이것이 내가 선택한 답입니다. 크레딧 주셔서 감사합니다!
— gReX

5

SVN처럼 TFS의 파일을 무시하는 완벽한 방법을 찾았습니다.
먼저 무시하려는 파일 (예 : Web.config)을 선택하십시오.
이제 메뉴 탭으로 이동하여 다음을 선택하십시오.

파일 소스 제어> 고급> 소스 제어에서 web.config 제외

... 그리고 붐; 파일이 소스 제어에서 영구적으로 제외됩니다.


1
이것은 코드 생성 파일을 위해 TFS 2010에서 작동합니다. 고마워!
— BozoJoe

1
이것은 실제로 작동하지만 .tfignore는 나를 위해 작동하지 않습니다. 고마워
— EpicKip

2
VS 2018에는이 옵션이 없습니다
— Adam

4

웹 사이트 프로젝트를 사용한다고 가정하겠습니다. 이들은 자동으로 프로젝트 디렉토리를 크롤링하고 모든 것을 소스 제어에 넣습니다. 그들을 막을 방법이 없습니다.

그러나 절망하지 마십시오. 웹 애플리케이션 프로젝트는이 이상하고 예상치 못한 (imho : moronic) 동작을 나타내지 않습니다. WAP는 VS2005 용 애드온이며 VS2008과 함께 제공됩니다.

프로젝트를 WAP로 변경하는 대신 자산 폴더를 소스 제어에서 TFS 문서 라이브러리로 이동하는 것을 고려할 수 있습니다. 프로젝트 자체가 자산 파일을 직접 사용하지 않는 경우에만이 작업을 수행하십시오.


네, 당신의 가정은 맞습니다. 나는 그것이 사실이라고 생각했는데, 아무것도 놓치지 않았다는 것을 확신하고 싶었습니다.
— Dave
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.