Como posso excluir um arquivo específico do controle de origem do TFS

89

Temos vários arquivos de configuração (app.DEV.config, app.TEST.config, etc) e um evento de pré-construção que copia o arquivo de configuração correto para app.config. Obviamente, os arquivos específicos de configuração estão no controle de origem --- mas, no momento, o App.Config também está, e não deveria estar.

Como posso marcar aquele arquivo como excluído do controle de origem, mas obviamente não do projeto.

Estou usando o VS 2005 e 2005 Team Explorer.

Ralph Shillington
fonte

Respostas:

39

Há uma política de check-in (Política de Padrões Proibidos) nas ferramentas de energia do MS que permite filtrar nomes de arquivos em relação a uma expressão regular. Consulte: Ferramentas de poder do Microsoft Team Foundation Server

Embora as políticas de check-in não sejam completamente infalíveis, elas são a coisa mais próxima que o TFS tem de impor regras definidas pelo usuário, como o que você está procurando.

(E como os outros disseram, você também pode ocultar um arquivo ou pasta, o que significa que ele permanece no controle de origem e é visível para todos os outros membros da equipe, mas não é copiado para o seu PC até que você decida desvendá-lo; ou você pode excluir o arquivo, o que significa que ele é excluído dos PCs de todos quando eles ficam mais recentes - mas nenhuma dessas opções impedirá que esses arquivos sejam adicionados ao controle de origem em primeiro lugar)

Jason Williams
fonte
1
O recurso de exclusão de todo o projeto da equipe que você está descrevendo não existe no TFS, infelizmente. (a menos que seja uma versão mais recente de 2010 do que a minha) A caixa de diálogo "Tipos de arquivo de controle de origem" controla quais tipos de arquivo não podem ser mesclados, ou seja, bloqueados exclusivamente.
Richard Berg,
Tenho o VSTS2005 / 2008 no trabalho, mas estou escrevendo isso em casa, então minha resposta veio da minha memória um tanto fraca - desculpe! Acabei de perceber que o que você precisa é a política de verificação de "padrões proibidos" das ferramentas avançadas do TFS. Isso permite que você combine nomes de arquivo usando um regex e bloqueie check
Jason Williams
Boa ideia, tinha me esquecido dessa política. Vou editar sua postagem para dar visibilidade.
Richard Berg,
Como posso desmarcar um branch ??? Escondi um galho por engano e não consigo desvendá-lo VS2012
rolivares
95

É fácil no TFS2012, crie um arquivo .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
fonte
como você faria uma pasta recursiva ignorar pacotes, mas incluir packages / repositories.config?
Maslow
@ Maslow, se você entendeu, fique à vontade para editar minha resposta. parece uma configuração bastante comum e devemos colocá-la no exemplo
artfulhacker
um arquivo .tfignore na raiz da coleção de projetos é aplicado automaticamente na hierarquia, mesmo que eles não tenham essa pasta mapeada / baixada?
Maslow de
2
Isso só é compatível com espaços de trabalho locais. msdn.microsoft.com/library/vstudio/…
Sumo
45

Selecione o arquivo App.config no Gerenciador de Soluções e escolha Arquivo -> Controle de Origem -> Excluir App.config do Controle de Origem.

PjL
fonte
1
exatamente o que eu precisava para não armazenar meus arquivos minificados.
Valamas
13
Me incomoda que esta opção não esteja listada no Menu de Contexto comum
Eric Herlitz
6
Eu não tenho essa opção. : '- (
Jan Aagaard
2
Também não está presente no Visual Studio 2013 Ultimate :(
Ytrog
4
Ele está presente (em Arquivo> Controle de origem> Avançado> Excluir App.config do controle de origem) em meu Visual Studio Premium 2013 (versão 12.0.3023.00 Atualização 3).
Martin Bäckström
21

Existe uma opção difícil de encontrar:

1. Selecione o arquivo ou vários arquivos no Solution Explorer

2. Vá para Arquivo -> Controle de fonte -> Avançado

Caminho para excluir

e aqui está

Aqui está o Excluir

Lembre-se: se você clicar com o botão direito em um arquivo no Gerenciador de Soluções, encontrará apenas "as opções mais importantes", não todas :)

Felix Keil
fonte
Não. Você deve abrir as pastas e selecionar cada arquivo que deseja excluir.
Felix Keil
13

Se tudo o que você deseja é ter um arquivo no projeto, mas não sob o controle de origem com o TFS, basta ir ao SourceControl, excluir o referido arquivo e desfazer o check-out do arquivo do projeto (ele tentará remover o arquivo do projeto como bem). Em seguida, faça o check-in da exclusão do arquivo que está excluindo. No explorador de soluções, você deve ver que não há ícone de controle de origem próximo ao arquivo que está excluindo. O arquivo de projeto deve listar um arquivo lá, mas esse arquivo agora não deve estar mais sob controle de origem.

Lembre-se de que qualquer outra pessoa agora verá um arquivo ausente no projeto quando for o último.

Seth
fonte
7

O TFS permite que você oculte no nível da pasta / arquivo. Quando algo é encoberto, o TFS não tenta sincronizá-lo (como um svn: ignore).

Ao configurar seu espaço de trabalho, disfarce tudo o que deseja que o TFS ignore. Um tutorial mais detalhado está aqui .

joshua.ewer
fonte
se ao menos houvesse uma maneira de ocultar a pasta para todos os espaços de trabalho ... não vejo nenhuma configuração equivalente em segurança.
felickz
Você não pode camuflar no nível do arquivo; única pasta.
dudeNumber4
@ dudeNumber4 Acredito que esse recurso foi desativado em versões posteriores do TFS, bem depois que a resposta inicial foi escrita. Você pode tentar este hack: social.msdn.microsoft.com/Forums/vstudio/en-US/…
joshua.ewer
5

Isso funcionou para mim:

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 Solution Explorer), deixar o TFS processar o (s) arquivo (s) ou pasta e desfazer o pendente 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.

Fonte: = "> Como posso excluir arquivos específicos do controle de origem TFS

Huilaaja
fonte
2

Visual Studio 2013 (e 2012)

Este recurso está disponível selecionando o (s) arquivo (s) e indo para:

File > Source Control > Advanced > Exclude ... from Source Control
Evan Mulawski
fonte
Não há exclusão em 2012.
ExpatEgghead
Não estou vendo isso em 2013 também
VictorySaber
2

Esta pergunta foi feita há algum tempo, mas se refere ao mesmo tipo de problema que eu estava tendo.

O problema:

  • Queremos verificar nosso código.
  • Queremos então construir nosso projeto.
    • Durante nossa compilação, dependemos de Build Events para mover os arquivos, de modo que temos os arquivos adequados para o processo de compilação ser concluído.
  • Quando nosso Build Event tenta copiar os arquivos, obtemos erros de Acesso negado.

O motivo:

  • O Plug-in do Visual Studio do Team Foundation Server altera o atributo Somente Leitura em nossos arquivos para READONLY TRUE quando fazemos check-in em nossos arquivos.

Exemplo de evento de construção:

  • copiar "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"

Acima, simplesmente precisamos mover um arquivo do nosso Caminho de construção de destino (as pastas bin \ debug ou bin \ release) para a nossa pasta de projeto. Na minha situação, isso foi feito para que eu pudesse incluir arquivos de projeto construído em meu instalador. Meu instalador não os estava pegando como parte do resultado do projeto.

A correção: (quase me chutei na cara quando descobri isso)

Novo evento de construção:

  • atrib -R "$ (ProjectDir) SomeFile.ext"
  • copiar "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
  • atrib + R "$ (ProjectDir) SomeFile.ext"

Estamos todos nos divertindo com o Build Events, certo? Acima eu simplesmente faço 2 coisas, removo o atributo somente leitura, agora os arquivos não são somente leitura. Copie meu arquivo como eu queria originalmente. Em seguida, substitua o atributo Read Only (opcional, eu acho) para manter o Visual Studio e o Team Foundations felizes.

E sim ... eu ainda estou me chutando na cara por causa disso.

Rob K.
fonte
0

Eu tenho um problema semelhante, meu App.config continha dados sensíveis (por exemplo, nome de usuário) que esses dados não deveriam ser sincronizados com o TFS.

O artigo Práticas recomendadas para implantar senhas e outros dados confidenciais no ASP.NET e no Serviço de Aplicativo do Azure descreve uma boa abordagem para evitar esse problema:

Use o atributo "file" do elemento "appSettings" para fazer referência a um arquivo de configuração que não é adicionado ao controle de origem

thuld
fonte
0

Se você tiver uma versão anterior ao TFS2012 e, portanto, não conseguir criar um .tfignorearquivo ou usar a File > Source Control > Advanced > Exclude …opção, pode tentar o seguinte:

  • Faça uma cópia do arquivo de destino no Windows Explorer.
  • Desfazer alterações pendentes (se houver) no arquivo de destino em Team Explorer / Visual Studio.
  • Exclua o arquivo de destino no Windows Explorer.
  • Mova a cópia do arquivo de destino para o local do arquivo de destino excluído e renomeie-o para que tenha o mesmo nome do arquivo de destino excluído.

O TFS agora parece ignorar as alterações no arquivo de destino. Se você precisar editar o arquivo novamente, não use o Visual Studio, pois o TFS colocará o arquivo de volta na lista de arquivos com Alterações pendentes.

Protetor um
fonte
0

Você pode simplesmente selecionar o arquivo em seu Source Control Explorer e clicar com o botão direito nele, e selecionar a opção "Rename" de lá, e você pode adicionar ".exclude" no final do nome do arquivo.

E então lembre-se de fazer o check-in do arquivo, e depois disso você pode ver que seu arquivo foi excluído do Controle de origem.

imsummysingh
fonte