Como fazer com que o TFS 2010 detecte alterações feitas em arquivos fora do Visual Studio?

118

Estou usando o Team Foundation Server 2010 com Visual Studio 2010.

Sempre que modifico um arquivo fora do Visual Studio, o TFS não parece detectar a alteração feita no arquivo e, portanto, não me oferece a opção de fazer o check-in do arquivo após sua modificação.

como isso pode ser resolvido?

Asmo
fonte
18
Subversion ou Git (e talvez outros) estão comparando hashes de arquivos ao invés de API para devolver / retirar um arquivo. Muito mais simples e menos arriscado!
Steve B
8
pior, o TFS nem percebeu que um arquivo alterado precisa ser verificado, então você pode esquecê-lo ... até que seu colega faça o check-out e perceba que seu código não está compilando ou funcionando. Não é de se admirar que as pessoas digam que TFS é "VSS com esteróides" - melhor, mas ainda tem muitos dos problemas de VSS.
gbjbaanb
É VSS com esteróides, da mesma forma que esteróides destroem seu corpo.
Ian Kemp

Respostas:

48

Se você tiver uma conexão de rede com o servidor enquanto estiver trabalhando fora do Visual Studio, provavelmente é melhor verificar o arquivo antes de editá-lo, usando o cliente de linha de comando tf ou a integração do shell do Windows Explorer que disponível na versão TFS Power Tools . (Além disso, um número cada vez maior de outras ferramentas tem integração com TFS que torna isso automático, mas se você estiver apenas usando o bloco de notas, isso ainda precisa ser uma etapa manual.)

Claro, muitas vezes você está trabalhando e não tem uma conexão de rede disponível que permita verificar os arquivos.

Se você sabe quais arquivos modificou, você pode apenas retirá-los de dentro do Visual Studio, então você poderá fazer o check-in novamente.

Se você não sabe quais arquivos editou, você pode detectar as alterações executando o tfpt onlinecomando (também parte da versão das ferramentas de poder). Isso localizará os arquivos que foram modificados localmente e fará o check-out desses arquivos no servidor.

Edward Thomson
fonte
O Visual Studio não parece detectar alterações nos arquivos apenas fazendo o check-out. Eu apenas tentei verificar uma pasta e o conteúdo apareceu em alterações pendentes como edições. Em seguida, excluí a pasta no File Explorer e atualizei as alterações pendentes, mas o Visual Studio não disse que os arquivos foram excluídos nas alterações pendentes. Além disso, os arquivos ainda estavam presentes no Solution Explorer.
Kyle Delaney
160

O TFS tem um comando "Reconciliar" para isso:

  1. Abra o Source Control Explorer
  2. Clique com o botão direito na pasta com as alterações e selecione Comparar
  3. Selecione os arquivos que deseja reconciliar (pressione CTRL+ Apara selecionar todos os arquivos)
  4. Clique no botão Reconciliar
  5. Defina as opções na caixa de diálogo Reconciliar diferenças de pasta . Certifique-se de que os arquivos que não têm alterações pendentes estejam definidos como Check-out
  6. Clique OK
  7. Se você tiver alterações locais, a caixa de diálogo Check-out será exibida. Defina o tipo de bloqueio preferido
  8. Clique em Check Out

Reconciliar diferenças de pasta

Veja também: reconciliar diferenças entre pastas

mhu
fonte
13
Esta é a melhor resposta, pois não requer a linha de comando ou um arriscado 'Desfazer alterações pendentes'.
NickH
4
Salvei meu dia! Segui seus passos com precisão e funcionou exatamente como esperado. :-)
Gilad Barner
4
Funcionou conforme descrito. Deve ser a melhor resposta.
Nicolas,
Infelizmente, ao fazer isso em todo o projeto, recebo o erro O caminho especificado, nome do arquivo ou ambos são muito longos. O nome completo deve ter menos de 260 caracteres e o nome do diretório deve ter menos de 248 caracteres. Selecionar pastas individuais não é uma opção para mim, porque não consigo me lembrar de todos os diretórios de arquivos que alterei. Qualquer ideia?
kraftwer1
2
Funcionando perfeitamente na atualização 3 do VS 2015, muito obrigado. Deve ser a melhor resposta, sem comandos complicados para fazer funcionar
Nicolas Leucci
35

Isso funcionou para mim, usando as ferramentas elétricas do TFS:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(onde nome-do-diretório é o caminho para o diretório a ser atualizado, caso contrário, ele detectará mudanças em todo o repositório TFS)

Se você quiser saber o que ele faria sem realmente fazer nenhuma alteração, pode forçá-lo a fazer uma simulação adicionando o /previewswitch.

Adam Batkin
fonte
Obrigado pela dica @Adam Batkin. Funcionou como um encanto e agora estou consertado! +1
iOnline247
9
Cuidado, esta linha de comando também incluirá arquivos indesejados: * .user, BIN \, obj, etc ...
Steve B
1
Saúde, eu estava procurando uma forma de linha de comando para automatizar a atualização do TFS da empresa a partir do meu repositório Git local!
Mark K Cowan
2
@SteveB há uma /exclude:fld_name/*,filenameopção que pode ser usada para excluir arquivos indesejados .. que me interrompeu muito
Kresimir Pendic
1
Eu corro assim tfpt online /deletes /noprompt /recursive directory-namee tenho mil arquivos para serem `alterados`, então tenho que desfazer. Mas eu nunca toquei nisso, apenas apaguei a pasta.
Dzmitry Lahoda
16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Eu testei essa solução alternativa em um galho e me ajudou muito. Mas existem apenas novos arquivos e novas pastas que precisam ser feitos manualmente.

Recomendo criar um branch antes da operação. Isola você o tempo da operação.

Observação: essa técnica também faz a limpeza idêntica dos arquivos que o TFS sempre marca como modificados.

hugbe8
fonte
3
Isso realmente deveria ser um comentário na postagem de Alga , não uma nova resposta. Em qualquer caso, eu ainda não recomendaria fazer isso pelo mesmo motivo que eu não recomendei quando alga sugeriu acima.
Edward Thomson
Totalmente brilhante! Exatamente o que eu estava procurando (depois que nossa empresa mudou nosso servidor TFS, e o TFS / VS2010 ficou perplexo com isso). Agora, acabei de verificar meus arquivos editados. Obrigado!
Mike Gledhill
Isso funciona, mas a MS deve fornecer maneiras melhores de fazer isso. A linha de comando e os hacks não devem ser necessários em um bom produto (especialmente se estiver embutido no VS). SVN e Mercurial fazem isso por diversão ...
user2173353
Em vez do ponto 4, você pode usar tfpt uu stackoverflow.com/a/544285/10245
Tim Abell
Isso só desfaz o que você fez. Isso não torna o Visual Studio ciente do que você fez.
Kyle Delaney
7

Experimente isso. É algum tipo de solução alternativa, mas funciona:

  1. fazer alterações fora do Visual Studio
  2. vá para o Visual Studio e abra o Source Control Explorer
  3. clique com o botão direito na pasta> "Check Out for Edit" > "Check Out"
  4. clique com o botão direito na mesma pasta> "Desfazer alterações pendentes ..." > "Desfazer alterações" > " Não para todos "

É isso aí. As mudanças estão visíveis agora.

Alexander G
fonte
3
Eu realmente não recomendo isso - minha maior preocupação seria que eu iria errar neste e acidentalmente desfazer todas as minhas alterações legítimas. Além disso, você está verificando todos os arquivos que, dependendo da configuração do seu cliente e servidor, provavelmente bloquearão alguns ou todos os arquivos e poderão fazer uma verificação mais recente, o que certamente pode ser irritante.
Edward Thomson
1
Isso só desfaz o que você fez. Isso não torna o Visual Studio ciente do que você fez.
Kyle Delaney
E se você criou ou adicionou novos itens, nessa sessão: Gone baby, gone!
Cristão
4

Também há outra solução para fazer o TFS descobrir os arquivos que foram alterados fora do Visual Studio:

  1. Abra a solução offline
  2. No Solution Explorer, selecione o arquivo de solução e pressione o botão Go Online ( Ícone do botão GoOnline)

O TFS verificará automaticamente a solução em busca de alterações depois disso.

O primeiro passo pode ser alcançado de várias maneiras diferentes. Aqui estão alguns:

  • Use a extensão GoOffline - muito simples e eficaz.
  • Se forem solicitadas credenciais TFS ao abrir a solução (sem autenticação automática de domínio), não insira as credenciais. A solução será aberta off-line e você fará o login após pressionar o botão Go Online
  • (solução extrema) Desconecte o cabo de rede; Abra a solução; Conecte o cabo de rede.
Cristian Lupascu
fonte
3

O Visual Sourcesafe funciona assim também e a forma como faço com que o VSS ou TFS perceba a alteração é verificando o arquivo uma vez dentro do Visual Studio.

CheckRaise
fonte
1

Abra o controle de código-fonte e vá para a pasta TFS. Clique com o botão direito na pasta e escolha 'Comparar'.

Observe que seus arquivos editados aparecem marcados em vermelho.

Acho que isso é melhor do tfpt onlineque também obter arquivos que não são somente leitura e não editados.

user2572682
fonte
1

Eu tive esse problema no passado, quando minha Internet estava inativa e eu trabalhava offline, e a maioria das minhas alterações não apareciam no Team Explorer.

Seguindo estas etapas: Primeiro, no gerenciador de soluções, selecione a pasta que você deseja reconciliar (para mim, era a minha pasta de solução inteira) e selecione Comparar ... insira a descrição da imagem aqui Clique em Modificar Filtro , e no texto do filtro caixa, você pode digitar:

*.cs;!obj\;!bin\;!packages\;

Neste exemplo, incluirá na pesquisa apenas arquivos C # e excluirá nas pastas: bin, obj e packages.

Observe que a coluna Pending Change tem as informações se o arquivo está marcado como editar, adicionar, etc ... ou nada ...

  • Para marcar como edição (quando o item local tem um item de servidor correspondente), selecione o arquivo e escolha Fazer check-out para editar ...
  • Para marcar como adicionar (quando o item local não tiver nenhum item de servidor), selecione o arquivo e escolha Adicionar arquivos

Por fim, não tenho certeza de por que os projetos não estão listados aqui (depois de remover o filtro * .cs, ainda não aparece), então reconstrua a solução para garantir que os projetos também sejam atualizados

+ Na solução, clique no botão de conexão (se aparecer) que diz Go Online .

Jaider
fonte
0

Descobri que no Visual Studio 2015, com o projeto aberto, o Visual Studio descobriu por si mesmo que os arquivos foram modificados externamente e fez o check-out automaticamente sem eu ter que fazer nada. O check-in do projeto da maneira normal salvou as modificações externas.

Graham Laight
fonte
0

No meu caso, o seguinte funcionou (pelo menos uma vez que tentei):

  1. Vá para o painel Alterações Pendentes
  2. Selecione Opções de exibição em alterações incluídas ou excluídas.
  3. Alternar entre Mostrar tudo e Mostrar alterações da solução
  4. Volte se desejar

Atualizar as alterações do TFS

Alterar a opção de exibição parece forçar uma atualização dos arquivos modificados.

ranzinza
fonte