Usamos um arquivo em lotes para gerar código e ele faz o check-out automático dos arquivos gerados do Team Foundation Server (TFS) para que possa regenerá-los. A maioria desses arquivos não é modificada, mas o gerador não sabe disso com antecedência.
O comando "tfs undo" desfaz o checkout, mas avisa se alguns foram modificados (o que não queremos fazer). Também não queremos fazer o check-in dos arquivos gerados imediatamente.
Existe um comando (ou série de comandos) para desfazer a verificação geral de todos os arquivos não modificados sem avisar o usuário?
tfs
version-control
tfvc
Robert Wagner
fonte
fonte
ADD
alterações sem aviso prévio (consulte a resposta de Ray ).Respostas:
Dê uma olhada no comando Desfazer inalterado do Team Foundation Server Power Tools agosto de 2011
Obrigado Matt Florence pela atualização do link.
Obrigado Ray Vega pela sintaxe real .
fonte
Instale o Team Foundation Server Power Tools e execute o seguinte na linha de comando usando tfpt.exe na raiz do diretório do espaço de trabalho do seu projeto:
c:\myProject> tfpt uu . /noget /recursive
A inclusão
/noget
é altamente recomendada, pois evita a obtenção forçada de todos os arquivos do seu projeto, o que, dependendo do número total, pode levar um tempo extremamente longo.fonte
cd
para onde seu diretório de espaço de trabalho é (por exemplo, o meu erac:\myProject
) ou incluí-lo explicitamente depoisuu
(substituindo o período.
com ele)Obrigado @mike & @ray,
Eu desejo facilitar.
No VS, no menu Ferramentas, clique em "Ferramentas externas".
Clique em Adicionar.
Digite o título.
Comando: tfpt.exe
Argumentos: uu. / noget / recursive
Diretório inicial: [você pode escolher no botão de seta].
Dois novos comandos são adicionados ao menu Ferramentas.
Use-os quando necessário.
Aproveitar,
Ofir
fonte
O Visual Studio saberá se o arquivo com check-out possui alterações ou nenhuma.
AVISO: Este método também remove novos arquivos, ou seja, arquivos que ainda não foram registrados no TFS. Se você deseja manter esses arquivos, basta excluí-los do conjunto de arquivos que você "desfaz".
fonte
Be aware that this method also removes added files that are not yet checked in from TFS.
... Sim, isso é um desqualificador bastante imediato.Atualizou esta pergunta com uma resposta ao trabalhar apenas com TFS2017 e VS2017 / VS2019 .
As ferramentas de poder não existem para o TFS 2017 e as antigas não podem funcionar bem com ele, mas aparentemente a maior parte da funcionalidade foi movida para o próprio VS2017 ou plugins (veja abaixo).
Extensão Visual Studio 2017/2019
Algumas ações, como desfazer arquivos inalterados, foram movidas para um
extensão para VS2017
extensão para VS2019
Localização do botão "Desfazer inalterado":
Bug conhecido
Você deve abrir o 'Source Control Explorer' (e deixá-lo aberto) para que 'Undo Unchanged' seja exibido no menu Action da exibição Pending Changes. relatado aqui .
Extensão de Integração de Shell do Windows
Além disso, você ainda pode configurar a integração de shell do Windows através de um instalador separado, que não está mais vinculado ao TFS Power Tools.
A integração do shell do Windows não funciona exatamente da mesma maneira que as ferramentas elétricas anteriores, mas as ações mais importantes funcionaram para mim.
fonte
Se você simplesmente fizer o check-in de todos os arquivos novamente que efetuou o check-out, o TFS será inteligente o suficiente para descobrir quais são alteradas e incluí-las apenas no conjunto de alterações registrado no servidor.
O TFS faz isso comparando os hashes MD5 do conteúdo dos arquivos antes e depois do check-in.
Isso tudo pressupõe que seu processo de geração esteja atualizando puramente o mesmo conjunto de arquivos, ou seja, você nunca terá um caso em que um arquivo gerado em uma geração anterior não seja necessário na próxima geração (ou seja, você desejará interromper uma exclusão para esse arquivo) ou que os arquivos mudem de nome.
Se o seu processo precisar potencialmente de exclusão de arquivos, a melhor opção é procurar o comando Team Foundation Power Tools ( tfpt ) e usar o comando tfpt online que verificará apenas os arquivos que foram alterados e será inteligente o suficiente para pend exclui todos os arquivos que não são mais necessários ou que mudam de nome e adiciona pend.
Boa sorte,
Martin.
fonte
Cuidado para desfazer o TFS não reverterá o valor "Data da modificação" do sistema de arquivos. Isso é muito frustrante, especialmente se você usar ferramentas como robocopy para sincronizar máquinas remotas. Mesmo depois de você desfazer o check-out, se você salvou o arquivo e atualizou o valor "Data da modificação", esse valor atualizado permanecerá mesmo após o check-out.
fonte
Existem alguns pontos sobre a opção uu para tfpt (recomendados na maioria das outras respostas) que não estavam claros para mim no começo. Primeiramente, esta é a ajuda da linha de comando que pode ser acessada com o comando
tfpt uu /?
Agora, deixe-me quebrar o comando recomendado nas outras respostas.
tfpt uu
especifica que desejamos usar o comando 'Desfazer inalterado'..
indica (eu acho) que o diretório de trabalho atual deve ser usado como o filespec./noget
garante que 'get latest version' não seja chamado antes de desfazer os arquivos inalterados./recursive
garante que não apenas o tipo de arquivo seja considerado, mas todas as pastas e arquivos filho recursivos. Isso parece depender do tipo de arquivo - se não houver nenhum fornecido, todo o espaço de trabalho será processado.Portanto, há algumas coisas a serem observadas aqui em relação ao comando de cima ...
Eu descobri que o comando a seguir funciona melhor para mim - ele processará todo o espaço de trabalho.
tfpt uu /noget
Observe que ele ainda depende do diretório ativo em que o tfpt o utiliza para determinar qual espaço de trabalho deve ser processado. Mas desde que você forneça um caminho para um arquivo ou pasta dentro da área de trabalho, você estará pronto.
fonte
Eu posso ver a abordagem de Ray LionFang acima. Não posso comentar lá, pois não tenho o representante. Embora eu goste dessa abordagem, pois não há alterações necessárias nas Ferramentas, etc ........
....... existe um problema com essa abordagem, ao pressionar "Não a todos" retém alguns arquivos que não são modificados. Parece fazer algo como Desfazendo arquivos não modificados até atingir o primeiro arquivo realmente modificado e depois ignora o restante dos arquivos não modificados, se isso fizer algum sentido. Só vi esse efeito de vez em quando.
Uma possível solução alternativa é seguir o processo acima, mas em vez de pressionar "Não para todos", pressione "Não" para cada arquivo. Como isso pode demorar um pouco, dependendo do número de arquivos com os quais você está trabalhando, o que eu normalmente faço é manter pressionado "ALT + N", e ele apenas acelera todos os arquivos enquanto desfaz TODOS os arquivos não modificados.
fonte
Até onde eu entendi, no TFS, se você faz o check-out de um projeto de equipe, o projeto inteiro é retirado e você não tem controle de quais arquivos serão desativados. Se você deseja impedir o check-in em determinados arquivos, pode bloqueá-los.
No trabalho, todos nós odiamos o TFS.
fonte