Team Foundation Server 2012 Asynchronous Checkout
16 de junho de 2012Com o lançamento do Team Foundation Server 2012 ganhamos uma funcionalidade muito interessante denominada “Asynchronous Checkout”. Desde as primeiras versões do TFS toda comunicação com o servidor já era baseada em http, permitindo ter desenvolvedores trabalhando em todos os cantos usando a internet como meio de integração.
O Team Foundation Server 2012 utiliza basicamente duas maneiras de trabalho com o código fonte: uma chamada de “local workspace” e outra chamada de “server workspace”. A opção mais comum e recomendada de uso é o modelo local, onde ele traz os arquivos que você vai trabalhar para uma pasta local e depois fica gerenciando apenas as alterações, necessitando sincronizar apenas os arquivos alterados, reduzindo grande parte da comunicação com o servidor, permitindo o uso do TFS Offline e garantindo operações básicas (add, edit, rename, delete, undo, diff).
Já no modo server os arquivos ficam centralizados no servidor eliminando a necessidade de baixar o projeto completo, porém não funcionar em caso de queda de conexão, ficando com o projeto travado sem poder fazer alterações. Esse modelo é recomendado para projetos grandes com muitos arquivos e onde o cliente local não tem muito espaço em disco.
Quando falamos de WorkSpace, ou seja, “espaço de trabalho”, não estamos falando sobre o modelo de compartilhamento dos arquivos. Para o compartilhamento temos duas opções: modo exclusivo (fica preso com você durante a edição) ou modo compartilhado (recomendado, onde todos podem alterar qualquer arquivo). Por padrão no template de processo ágil chamado de Visual Studio Scrum o modelo de trabalho é múltiplo check-out, permitindo uma maior colaboração, fazendo com que você não fique parado enquanto uma outra pessoa está com algum arquivo preso como um arquivo de projeto.
Para configurar o modelo de compartilhamento dos arquivos vá em Team Explorer > Settings > Team Project > Source Control conforme a Figura 01.
Figura 01 – Configurando Multiple Check-out
Mas a grande novidade da vez no Team Foundation Server 2012 é a funcionalidade Asynchronous Checkout que amplia o conceito “local workspace”, realizando um checkout em segundo plano, proporcionando para nós desenvolvedores uma melhor experiência sem “travar” o Visual Studio enquanto ele se comunica com os serviços do Team Foundation Server 2012.
O ‘local workspace’ é o primeiro passo para termos suporte a uma tendência que é o conceito de DCVS (Distributed Concurrent Versions System). Na prática você agora pode trabalhar tranquilamente em modo off-line (descontado do TFS), realizando suas alterações com todos os arquivos liberados e, quando voltar a se conectar, ele fará o sincronismo dos arquivos. Trabalhar desconectado se tornou muito fácil com o Team Foundation Server 2012.
Para ativar o Asynchronous Checkout vá no Team Explorer > Team Project Collection > Source Control > Workspace Settings conforme a Figura 02.
Figura 02 – Workspace Settings
Como você pode observar no caminho utilizando durante a configuração do Asynchronous Checkout fizemos diretamente no Team Project Collection essa alteração afetando qualquer Team Project criado nessa estrutura.
Agora para praticar faremos uma pequena simulação. Conforme demonstrado na Figura 03 o arquivo HomeController.cs está disponível, ou seja, ninguém o está manipulando nesse momento.
Figura 03 – Arquivo disponível
O próximo passo é interromper a conexão com Team Foundation Server 2012, desligando o seu cabo de rede ou qualquer outro recurso, deixando o Visual Studio detectar que o TFS não está mais disponível conforme a Figura 04.
Figura 04 – Team Explorer offline do TFS
Com o Team Foundation Server off-line continue trabalhando normalmente no Visual Studio. Então pelo Solution Explorer abra o arquivo HomeController.cs e inicie a edição mesmo. Vai perceber que naturalmente ele mesmo descontado está disponível para edição conforme a Figura 05.
Figura 05 – Editando um código
E se você retornar ao Solution Explorer conforme a Figura 06 verá que o arquivo está marcado em modo de edição. Na prática o Visual Studio está gerenciando essas alterações que você está realizando em modo desconectado do serviço do Team Foundation Server.
E para conferir os itens pendentes vá ao Team Explorer > Pending Changes conforme a Figura 07 e verá o referido arquivo na lista de pendência local. Fantástico!!!
Figura 07 – Arquivo editado na lista de pendência.
Como você observou, ao se conectar novamente no Team Foundation Server basta fazer o Check-In e sincronizar as alterações com o servidor. Para tonar essas alterações mais divertidas enquanto estávamos off-line aproveitei para me conectar ao Team Foundation Server de outro computador e fazer uma modificação nesse mesmo arquivo. Com isso, ao tentar sincronizar ele vai identificar um possível conflito. A ferramenta tenta resolver sozinha e quando não consegue alerta a você, conforme pode observar na Figura 08, caindo na rotina padrão de gestão de merge no TFS.
Figura 08 – Resolve conflicts
Você pode escolher a sua alteração, escolher a versão do servidor ou entrar na ferramenta de Merge, conforme a Figura 09 e fazer manualmente os ajustes e depois de resolvido efetuar novo Check-in.
Figura 09 – Ferramenta de merge
O Team Foundation Server 2012 ganhou mais agilidade no gerenciamento de código mesmo estando off-line, permitindo a você em modo descontado ter ampla liberdade de fazer as alterações e, depois, quando possível, realizar o sincronismo integrando o seu código com a sua versão principal no servidor.
Outro ponto importante em destaque que vai fazer a diferença é justamente o suporte ao modo assíncrono, permitindo uma maior agilidade nas operações com o controle de versão, deixando o Visual Studio 2012 liberado para você continuar trabalhando. E, de brinde, outra novidade é que agora o Visual Studio detecta alterações externas nos arquivos e inclui automaticamente essas alterações na sua lista de pendência.
[],
Ramon Durães
MVP, Visual Studio ALM
CSM, PSM, PSD
Para consultoria e treinamento em Team Foundation Server procure a 2PC e tenha sucesso
no seu projeto.