O Visual Studio TFS mostra arquivos inalterados na lista de alterações pendentes

94

Vejo um arquivo na janela de alterações pendentes. Tento compará-lo com a versão mais recente e recebo uma mensagem 'Os arquivos são idênticos'. Se os arquivos são idênticos, por que este arquivo está aparecendo na janela de alterações pendentes? O que mudou neste arquivo? Posso configurar o TFS para não listar arquivos idênticos?

desenvolvedor
fonte
Por acaso, o seu antivírus está atualizando a data da última modificação dos arquivos? Ou você está trabalhando em um laptop criptografado?
DOK
ScottGu explica como o antivírus pode alterar essas datas neste artigo (pesquise "vírus") weblogs.asp.net/scottgu/archive/2006/09/22/…
DOK
58
Esse deve ser um dos "recursos" mais irritantes do TFS
Brad Thomas
Também estou tendo esse problema - o TF funciona, mas o TFPT não - acho que é porque estou usando "TFPT - Team Foundation Power Tools 2012" com o espaço de trabalho do Visual Studio 2010 ...: - /
BrainSlugs83
Parece que tudo que eu tive que fazer foi conectar à mesma coleção no Visual Studio 2012. Veja esta postagem para mais detalhes: stackoverflow.com/questions/1758606/…
BrainSlugs83

Respostas:

49

Isso é normal se um arquivo for retirado automaticamente devido a uma alteração e se o conteúdo do arquivo for alterado de volta ao seu estado original. Nesse ponto, você veria a mensagem sobre conteúdos idênticos na comparação.

Esta entrada de blog descreve uma maneira não tão intuitiva de lidar com isso; e nos comentários há uma sugestão ainda melhor sobre como lidar com isso por meio da linha de comando por meio de ferramentas avançadas do TFS.

Alterações pendentes do TFS ignorando arquivos idênticos ...

capacitador
fonte
12
Eu recomendo fortemente que você use a tfpt uuferramenta de poder e não a solução hacky "No To All". Somente as edições adicionadas e modificadas recebem esse prompt. Por exemplo: renomear (que são apenas renomear pendentes, não renomear + editar) serão desfeitas pela IU sem prompt.
Edward Thomson
8
No caso de a postagem original do blog desaparecer, o comando is tfpt uu /noget /r *, que deve ser executado a partir da raiz do branch. Dizendo isso, embora ele pegue as alterações redundantes corretamente e, em seguida, afirme que as desfaz, eu ainda as vejo como retiradas no VS e na caixa de diálogo Check-in, então parece quebrado para mim: /
Mike Chamberlain
2
Outra possibilidade de isso acontecer é alternar a parte "somente leitura" de um arquivo sem realmente alterar seu conteúdo. O TFS pode ser irritante às vezes.
arviman
1
Para referência, a solução "Não para todos" é copiada aqui do link: "Outra opção é“ Desfazer check-out ”todas as alterações e clicando em“ Não para todos ”quando solicitado a confirmar para desfazer check-out. Desta forma, o Visual Studio irá “Desfazer check-out” todos os arquivos que não foram alterados, e todos os arquivos alterados permanecerão com check-out. Sempre uso esse método. "
PJSimon
Esse truque "Não para todos" é bom, mas tem algumas desvantagens. Por exemplo - eu uso minha ferramenta para gerar classes DB EntityFramework. Eu os gero em um diretório externo e apenas os arrasto para minha solução. Às vezes, quando não há alterações, ele ainda exibe alterações. Este truque "Não para todos" os remove. Mas se houver novas classes adicionadas, que não existiam antes, ele as remove do controle de origem - tenho que adicioná-las de volta manualmente.
Wish
17

Recentemente, acabei de atualizar o VS2010 para o VS 2013, e esse problema é ainda pior. Quando você usa a comparação, os arquivos idênticos não aparecem de forma alguma. Eu odeio isso porque você não pode descobrir quais arquivos são realmente alterados até verificar os arquivos de comparação com cuidado.

Finalmente, descobri uma solução alternativa para isso:
Adicione "Desfazer checkouts inalterados" nas ferramentas externas:

  • Comando: tfpt.exe
  • Argumentos: uu . /noget /recursive
  • Diretório inicial: $(SolutionDir)

Depois de executar esse comando, o TFS desfará automaticamente todas as alterações redundantes nos arquivos.
Mas esses arquivos ainda mantêm o status de check-out, na verdade eles já foram desfeitos e iguais à versão mais recente. Acho que é um bug do TFS. Você só precisa clicar no ícone Atualizar na barra de ferramentas no gerenciador de soluções, esses arquivos serão atualizados e mostrarão o status correto!

Zmaggie
fonte
2
Eu executei "tfpt uu. / Noget / recursive" e ele afirma que não há alterações pendentes redundantes no espaço de trabalho. VS2015, TFPT 2015. Todas as minhas alterações são alterações vazias [mesclar].
multiplicação rápida de
Eu havia tentado isso sem sucesso. Remover o ponto do argumento parece fazê-lo funcionar corretamente: uu / noget / recursive
dperez
10

Para tornar a explicação acima mais clara:

  1. Instale TFS Power Tools usando o gerenciador de pacotes NuGet no VS.
  2. Abra o Prompt de Comando do Visual Studio (também chamado de Prompt de Comando do Desenvolvedor para VS 2013/2015) a partir do Windows Start.
  3. Navegue até o local raiz do seu espaço de trabalho local por meio do prompt de comando.
  4. Execute este comando: tfpt uu. / recursive / noget
  5. Escolha descartar as alterações redundantes, se solicitado.

Funcionou para mim.

Mais distante:

Às vezes, descobri que preciso executar o comando no prompt de abertura do Prompt de comando do desenvolvedor (e obter um erro de espaço de trabalho não encontrado), antes de navegar para a pasta do espaço de trabalho e executar lá. Se eu for direto para a pasta correta, o comando não será encontrado. (Eu não me importaria em uma solução para esse problema em si.)

Phil
fonte
Obrigado-me-de-30 de novembro de 2015. Eu sempre recebo o mesmo problema e sua resposta foi perfeita. Tentei votar em você, mas recebi algum tipo de erro de 'continuum espaço-tempo'. Algo a ver com 30 de novembro de 1955 e "necessários 1,21 gigawatts não encontrados".
Phil
Infelizmente, não está funcionando para mim. Unable to determine the workspace. Já tentei atualizar o cache do espaço de trabalho, sem sucesso. Após 2 horas, desistirei e verificarei os arquivos não alterados para me livrar deles.
C4d
@ C4u Eu posso ter começado a experimentar esse mesmo, desde que mudei para o VS 2015. No entanto, o problema com a ocorrência de arquivos em check-out foi embora. Vou ver o que posso descobrir.
Phil,
1
Não consegui encontrar o PowerTools usando NuGet, mas consegui encontrar e instalá-lo por meio de uma pesquisa no google "Ferramentas de poder do Microsoft Visual Studio Team Foundation Server 2013"
Colin
@Versatile Olhando para o Visual Studio 2017, você precisaria ir para 'Ferramentas'> 'Extensões e atualizações ...' Não me lembro da estrutura do menu em 2013/15. Talvez minha resposta requeira correção. Se você tem o VS 2013/15 e pode verificar a estrutura do menu, sinta-se à vontade para editar minha resposta. :)
Phil
1

Stage AllResolvi isso clicando no botão em Alterações e removendo o estágio com Unstage All.

Isso resolveu o arquivo inalterado que eu tinha em minha Changesseção. Bom e simples.

Tom 'Blue' Piddock
fonte
0

O Visual Studio 2012 introduziu um novo conceito chamado Espaço de Trabalho Local .

Quando a localização do espaço de trabalho for configurada como local, ele colocará uma cópia local do arquivo original (como o SVN / CVS).

Em seguida, ele ocultará automaticamente os arquivos inalterados das alterações pendentes.

Use o TFS Source Control Explorer para "Editar ..." o TFS Workspace e altere "Advanced ..." - definindo Location de Server para Local.

Rolf Kristensen
fonte
Meu espaço de trabalho é local, mas os arquivos não modificados ainda aparecem nas alterações pendentes ... Isso não desfaz automaticamente o check-out ...
Ozkan
0

Para mim, reconciliar o espaço de trabalho resolve essas alterações pendentes inválidas:

  1. Team Explorer -> Builds
  2. Clique com o botão direito na última construção com suas alterações -> "Reconciliar área de trabalho ..."
AnonyMouse
fonte