Como ignorar arquivos / diretórios no TFS para evitar que eles acessem o repository de origem central?

É possível configurar arquivos / pastas para ignorar em uma base por projeto no controle de origem do TFS?

Por exemplo, eu tenho um site com uma pasta de ativos que não quero entrar no controle de origem. Esses ativos são mantidos por um sistema separado. Além disso, não quero colocar vários gigabytes de ativos no controle de código-fonte, mas preciso de alguns exemplos em minha máquina dev, mas não quero verificá-los em nenhum deles.

Se eu estiver trabalhando neste site enquanto estiver vinculado ao controle de origem e eu atualizar a tree, esses arquivos serão automaticamente adicionados novamente

Eu quero evitar que isso aconteça.

Para VS2015 e VS2017

Funciona com o TFS (on-prem) ou o VSO (Visual Studio Online – a oferta hospedada no Azure)

A documentação do NuGet fornece instruções sobre como fazer isso e eu apenas os segui com êxito para o Visual Studio 2015 e o Visual Studio 2017 em relação ao VSTS (TFS hospedado no Azure). Tudo está totalmente atualizado a partir de novembro de 2016, agosto de 2018.

Eu recomendo que você siga as instruções do NuGet, mas apenas para recapitular o que eu fiz:

  1. Certifique-se de que sua pasta de packages não esteja comprometida com o TFS. Se for, tire-o de lá.
  2. Tudo o que criamos abaixo vai para a mesma pasta em que seu arquivo .sln existe, a menos que especificado de outra forma (as instruções do NuGet não são completamente claras sobre isso).
  3. Crie uma pasta .nuget . Você pode usar o Windows Explorer para nomeá-lo .nuget. para que ele seja salvo com sucesso como .nuget (remove automaticamente o último período), mas diretamente tentando nomeá-lo .nuget pode não funcionar (você pode receber um erro ou alterar o nome, dependendo da versão do Windows).
  4. Dentro dessa pasta, crie um arquivo NuGet.config e adicione o seguinte conteúdo e salve-o:

NuGet.config:

       
  1. Volte para a pasta .sln e crie um novo arquivo de texto e nomeie-o como .tfignore (se estiver usando o Windows Explorer, use o mesmo truque acima e nomeie-o como .tfignore. ) .tfignore.
  2. Coloque o seguinte conteúdo nesse arquivo:

.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. Salve tudo isso, confirme-o no TFS, feche e reabra o Visual Studio e o Team Explorer não deverá mais identificar a pasta de pacotes como um check-in pendente.
  2. .tfignore / colei via Windows Explorer o arquivo .tfignore e a pasta .nuget para todas as minhas várias soluções e as comprometi, e não tenho mais a pasta packages tentando entrar no repository de controle de código-fonte!

Personalização Adicional

Embora não seja meu, eu encontrei este modelo .tfignore por sirkirby para ser útil. O exemplo em minha resposta cobre a pasta de packages Nuget packages mas esse modelo inclui algumas outras coisas, além de fornecer exemplos adicionais que podem ser úteis se você quiser personalizar isso ainda mais.

Se você estiver usando espaços de trabalho locais (TFS 2012+), agora você pode usar o arquivo .tfignore para excluir pastas locais e arquivos de check-in.

Se você adicionar esse arquivo ao controle de origem, poderá garantir que outras pessoas da sua equipe compartilhem as mesmas configurações de exclusão.

Detalhes completos sobre o MSDN – http://msdn.microsoft.com/pt-br/library/ms245454.aspx#tfignore

Para os preguiçosos:

Você pode configurar quais tipos de arquivos são ignorados, colocando um arquivo de texto chamado .tfignore na pasta onde você deseja aplicar as regras. Os efeitos do arquivo .tfignore são recursivos. No entanto, você pode criar arquivos .tfignore em subpastas para replace os efeitos de um arquivo .tfignore em uma pasta pai.

As seguintes regras se aplicam a um arquivo .tfignore:

  • # começa uma linha de comentário
  • O e ? curingas são suportados.
  • Um filespec é recursivo, a menos que seja prefixado pelo caractere \.
  • ! nega um filespec (arquivos que correspondem ao padrão não são ignorados)

Arquivo de exemplo:

 # 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 

Parece um pouco pesado ignorar arquivos (e pastas) no Team Foundation Server. Eu encontrei algumas maneiras de fazer isso (usando o TFS / Team Explorer / Visual Studio 2008). Esses methods também funcionam com o tipo de projeto ASP do site.

Uma maneira é adicionar um item novo ou existente a um projeto (por exemplo, clicar com o botão direito no projeto, Adicionar item existente ou arrastar e soltar do Windows Explorer para o explorador de soluções), permitir que o TFS processe o (s) arquivo (s) ou pasta mudanças no (s) item (ns). O TFS os desmarcará como tendo uma alteração de adição pendente e os arquivos ficarão quietos no projeto e ficarão fora do TFS.

Outra maneira é com o comando Add Items to Folder do Source Control Explorer. Isso inicia um pequeno assistente e, em uma das etapas, você pode selecionar itens a serem excluídos (embora, eu acho que você tenha que adicionar pelo menos um item ao TFS com esse método para o assistente permitir que você continue).

Você pode até mesmo adicionar uma política de check-in de padrões proibidos (em Equipe -> Configurações do projeto de equipe -> Controle de origem … -> Política de check-in) para impedir que outras pessoas da equipe verifiquem por engano certos ativos.

Para o TFS 2013 :

Comece no VisualStudio – Team Explorer , na checkbox de diálogo PendingChanges desfaça as alterações com o estado [add], que deve ser ignorado.

O Visual Studio detectará os Add (s) novamente. Clique em “Detectado: x adicionar (s)” em alterações excluídas

No aberto “Promover Alterações Cadidate” -Dialog Você pode facilmente excluir arquivos e pastas com o Contextmenu. Opções são:

  • Ignore este item
  • Ignorar por extensão
  • Ignore por nome de arquivo
  • Ignore by ffolder (sim, ffolder, TFS 2013 Atualização 4 / Visual Studio 2013 Premium Update 4)

Não esqueça de fazer Check-in no arquivo .tfignore alterado.

Para VS 2015/2017 :

O mesmo procedimento: Na guia “Alterações excluídas” no TeamExplorer \ Alterações pendentes, clique em Detected: xxx add (s)

A guia Alterações excluídas no TeamExplorer \ Alterações pendentes

A checkbox de diálogo “Promover alterações de candidatos” é aberta e, nas inputs, você pode clicar com o botão direito do mouse no menu de contexto. Typo é corrigido agora 🙂

Eu vou assumir que você está usando projetos de sites. Eles rastreiam automaticamente o diretório do projeto e lançam tudo no controle de origem. Não há como pará-los.

No entanto, não se desespere. Os Projetos de Aplicações Web não exibem esse comportamento estranho e bastante inesperado (idiota: imbecil). O WAP é um complemento do VS2005 e vem direto com o VS2008.

Como uma alternativa para alterar seus projetos para WAP, você pode considerar mover a pasta de ativos do controle de origem e em uma biblioteca de documentos do TFS. Só faça isso se o projeto em si não usar diretamente os arquivos de ativos.

Eu encontrei a maneira perfeita para ignorar arquivos no TFS como o SVN.
Primeiro de tudo, selecione o arquivo que você deseja ignorar (por exemplo, o Web.config).
Agora vá para a aba do menu e selecione:

Controle de Origem de Arquivo> Avançado> Excluir web.config do controle de origem

… e boom; seu arquivo é permanentemente excluído do controle de origem.