26/06/2012 | Autor: Igor Abade V. Leite | Categoria: Técnico | Comentários

Como transferir seu workspace do TFS de um computador para outro

Imagine o seguinte cenário: você está no meio de um projeto, com vários arquivos em checkout, e por algum motivo precisa trocar de computador e continuar seu trabalho em outro computador. Se seus arquivos não estivessem sob controle de versão, isso não seria um problema. Era só copiar seu diretório num pen-drive, levar para o outro micro e pronto! Mas como você está usando o TFS tem algumas coisas que não podem ser esquecidas:

  1. O status do checkout dos arquivos (“pending change”, como chamamos no TFS) é uma informação que é mantida dentro de seu workspace;
  2. O workspace é atrelado ao computadoronde você está trabalhando;
  3. Se você simplesmente levar os arquivos num pen-drive, não vai saber quais estavam em checkout;
  4. Se você nunca mais voltar para o computador antigo vai deixar um monte de arquivos em checkout. Ou seja, a solução ideal seria podermos levar todos os arquivos (a “solução pen-drive”) e também o status do checkout dos arquivos. Em outras palavras, transferir todo o espaço de trabalho e não só o conteúdo dos arquivos. Fazer isso parece complicado, mas é daquelas coisas que depois que fazemos uma vez parecem bem simples! Em linhas gerais, o processo envolve:

  5. Guardar as alterações pendentes num shelveset;
  6. Transferir o workspace para o outro computador;
  7. Atualizar os diretórios de trabalho locais;
  8. Baixar as alterações guardadas no shelveset.

Guardar as alterações pendentes num shelveset

Usar um pen-drive está longe de ser a solução ideal – especialmente se você trabalhar numa empresa onde seu uso não é permitido (bastante comum em empresas do mercado financeiro). Além disso, você não pode sequer fazer um checkin – afinal seu trabalho ainda não está pronto! A solução é guardar todas as suas alterações num shelveset. Podemos fazer isso via linha de comando ou pela interface gráfica. Para este exemplo, usemos a linha de comando. Supondo que você tenha mapeado a raiz do controle de versão do TFS para a pasta C:\Projetos, teríamos algo assim:

1
> C: > CD \Projetos > tf shelve Backup_Transferencia /recursive /noprompt

Isso irá criar um shelveset chamado Backup_Transferencia no servidor com todos os arquivos criados/alterados que você precisa manter mas para os quais ainda não poder fazer checkin. Neste momento você já pode se despedir do seu computador antigo e ir para o novo. Smile

Transferir o workspace para o outro computador

Agora já estamos no novo computador. Quando você conecta pela primeira vez no TFS num computador qualquer é criado um novo espaço de trabalho em branco. O que vamos fazer é trazer o espaço de trabalho que foi criado no computador antigo. Com isso podemos manter todas as informações existentes lá:

  • Mapeamento de diretórios locais/remotos;
  • Status de edição/checkout dos arquivos. Para mover o espaço de trabalho para o novo computador, executamos o seguinte comando (coloque tudo na mesma linha):

    tf workspaces /collection:http://meu-tfs:8080/tfs/MinhaColecao /owner:meu_usuario /updateComputerName:computador_antigo /computer:computador_novo

Onde:

  • http://meu-tfs:8080/tfs/MinhaColecao: URL da TPC (team project collection) do TFS que você está acessando;
  • meu_usuario: Seu usuário no Windows (ou AD) com o qual você conecta no TFS – tipicamente no formato dominio\usuario;
  • computador_antigo: Nome do computador de origem do espaço de trabalho;
  • computador_novo: Nome do computador de destino do espaço de trabalho.

Atualizar os diretórios de trabalho locais

O comando tf workspaces que vimos acima transfere todas as configurações do espaço de trabalho, mas não o seu conteúdo! Vamos resolver isso agora. Abra o Visual Studio no novo computador, conecte-se ao TFS e abra o Source Control Explorer. Selecione o espaço de trabalho que você moveu para o novo computador (não se esqueça desse passo!): Seleção no espaço de trabalho ativo no Visual Studio Pra trazer o conteúdo para o novo computador é preciso baixar novamente os arquivos a partir do TFS. Mas, ao contrário do que muitos estariam tentados a fazer, você não poder usar o Get Latest Version! Isso porque:

  • O TFS assume que você já tem todos os arquivos no seu computador (ele não sabe que você transferiu apenas o espaço de trabalho sem os arquivos); e
  • Alguém pode ter feito um novo checkin que você ainda não está pronto para incorporar ao seu trabalho. Um Get Latest Version poderia desestabilizar a versão do código-fonte em que você está trabalhando. O primeiro ponto (“O TFS assume que você já tem todos os arquivos no seu computador”) é fácil de resolver. Quem já usa o TFS há algum tempo certamente já deve ter pensado no famoso comando Get Specific Version, com a opção de force get: Caixa de diálogo Get Specific Version Mas isso não elimina o segundo problema. Você não pode, em hipótese alguma, usar Latest Version como seletor de versão – afinal alguém pode ter feito um checkin recentemente. O “truque” é usar Workspace Version como seletor de versão: Caixa de diálogo Get Specific Version com a opção Workspace Version selecionada Com isso o TFS baixará para sua máquina exatamente a mesma versão dos arquivos que existiam inicialmente no espaço de trabalho. Essa “mágica” só é possível porque o TFS guarda no espaço de trabalho qual era a versão do arquivo no instante em que ele foi baixado para seu computador. Sem isso o comando Undo Pending Changes, por exemplo, não funcionaria! Vamos à linha de comando para fazer tudo isso?

    C: > MD \Projetos > CD \Projetos > tf get /version:W /recursive /force /noprompt

Reparou nos argumentos /version:W e /force? O W no nosso exemplo significa Workspace – ou seja, use a versão armazenada no espaço de trabalho. Executar o comando a partir do diretório C:\Projetos é de especial importância. Como a pasta C:\Projetos estava mapeada ao diretório $/ do TFS (no nosso exemplo; em seu computador pode estar diferente) o TFS consegue inferir, a partir do diretório atual, qual o espaço de trabalho correto a usar.

Baixar as alterações guardadas no shelveset

Neste ponto você tem seu espaço de trabalho transferido, restaurado e preenchido no computador novo. Mas ainda falta trazer de volta nossas alterações pendentes. É só fazer um unshelve agora:

1
> C: > CD \Projetos > tf unshelve Backup-Transferencia /recursive /noprompt

E pronto! Agora você pode começar a trabalhar no seu novo computador com todos os arquivos tal como estavam no computador antigo! Um abraço, Igor