중앙 소스 저장소로 이동하지 않도록 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.