Controlando versões com o Team Foundation Server (Version Control) - Parte I
Imaginem um projeto de software. Neste projeto, temos que manipular arquivos com código fonte do nosso projeto, assim como em todos os projetos de softwares em todo o mundo.
Imaginem um projeto de software. Neste projeto, temos que manipular arquivos com código fonte do nosso projeto, assim como em todos os projetos de softwares em todo o mundo. Quando estamos trabalhando sozinho, em um projeto de pequeno e médio porte, a complexidade de gerenciar os arquivos existe, mas não é muito trabalhoso, pois apenas uma pessoa esta trabalhando no projeto, no caso você. Qualquer dúvida é só perguntar a você mesmo. Em um projeto de grande porte a complexidade já aumenta bastante trabalhando sozinho. Em se tratando de um projeto de médio e grande porte, com um time de pessoas, a complexidade explode. Em um cenário onde temos várias pessoas trabalhando, criando, acessando e modificando algum código fonte, onde não existe nenhum controle no que é alterado e por quem é alterado, o projeto se torna uma confusão enorme. Com muita sorte e com todos os planetas do sistema solar alinhados o projeto vai ter sucesso.
Quando falamos em complexidade no gerenciamento de arquivo em um projeto estou me referindo a:
· Ter controle de quem está modificando o arquivo;
· Recuperar alguma versão anterior de um arquivo;
· Comparar versões de arquivos para identificar o que foi modificado e por quem;
· Controlar o acesso para que não haja perca de informações.
Alguns dos critérios de sucesso em um projeto são o controle de versão e o gerenciamento da configuração tanto do ambiente quanto da ferramenta onde a equipe envolvida no ciclo de desenvolvimento do software/projeto esta trabalhando. Para este trabalho temos um software chamado de source control, ou controle de versão.
Para fazer um comparativo, no mundo dos bancos de dados temos uma semelhança com os controladores de versão. No começo, todos os dados eram guardados em arquivos. Para pequenas informações não existem grandes problemas, mas quando o volume de dados cresceu, vários problemas apareceram. Perca de integridade dos dados, falta de controle de quem mudou o que por exemplo. Para a solução deste e outros problemas, os SGBDs, Sistema de Gerenciamendo de Banco de Dados, foram criados. Os controladores de versão são similares, pois possuem funcionalidades parecidas, em si tratando em gerenciamento dos dados.
Como solução Microsoft para este problema temos o Visual Source Save. O Visual Source Save está em sua versão 2005 e é uma solução de controle de versão para times pequenos e médios. Possui as mesmas funcionalidades como suporte a XML, acesso remoto via http e capacidade de até 4 GB. Entretanto, quando precisamos de gerenciador de versões mais robusto, totalmente integrado com o ciclo de desenvolvimento de software, relatórios dinâmicos e integrado ao SQL Server 2005, a melhor solução é o Team Foundation Version Control.
O Team Foundation Version Control possui vários recursos e funcionalidades entre elas alguns aprimorados e outros novos.
Check-Out – Esta funcionalidade permite que o usuário reserve, travando, o arquivo. Com isso só ele pode realizar alterações naquele momento. Outros usuários podem ter acesso ao arquivo para o modo leitura, mas não para o modo escrita. As alterações realizadas só serão vistas por todos quando o usuário que realizou o Check-Out fizer o Chek-In. Podemos ver mais detalhes na Figura 1.
Check-In – Esta funcionalidade permite que o usuário libere o arquivo e envie o arquivo modificado para o servidor. Com isso, todos podem utilizar agora o arquivo para o modo escrita. Podemos ver mais detalhes na Figura 2.
Merging – Permite que os conflitos gerados por diferentes versões de um arquivo possam se integrar e gerar um único arquivo com uma versão mais nova.
Branching – Permite que duas equipes possam trabalhar em paralelo evitando que uma equipe prejudique a outra.
Label – Permite a identificação de alguma versão específica de um arquivo.
Figura 1 - Check-Out
Figura 2 - Check-In
Changesets – São as alterações que uma operação de Check-In produz. Podemos imaginar o Changeset como um ID, como podemos ver na Figura 3.
Shelving – Permite que o usuário armazene localmente em sua máquina ( espaço criado pelo Team Foundation Server ) o arquivo que ainda não pode ser feito o Check-In.
Check-In Policy – Permite que o Chek-In de um determinado arquivo esteja associado a um work item ou a um arquivo de teste unitário. Esta opção é bastante interessante, pois com a vinculação do Check-In podemos melhorar a qualidade do nosso código com a execução de testes unitários. Na Figura 4 podemos ver esta opção mais detalhada.
Check-In Notes - Esta opção permite que comentários específicos, como o comentário do revisor de performance do código. Na Figura 5, podemos observar os campos destinados para os revisores do arquivo.
WorkSpaces - É a região, na máquina do desenvolvedor, onde os arquivos do projeto estão copiados do servidor, onde os desenvolvedores podem manipular. Na Figura 6 podemos ter uma idéia dos arquivos do projeto e em qual workspace eles se encontram.
Figura 3 – ChangeSet
Figura 4 - Check-In Policy
Figura 5 - Check-In Notes
Figura 6 - WorkSpaces
Neste artigo demos uma breve olhada no controle de versão que o Team Foundation Server nos oferece como solução do desafio que é gerenciar o controle de versão dentro de um projeto de software.