Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Este artigo irá lhe mostrar o que é e como funciona o repositório de código fonte do Team Foundation Server 2008. Você irá conhecer o Team Foundation Version Control, um dos principais componentes do Team Foundation Server. Neste artigo você verá como colocar os seus projetos no TFVC e principalmente como usar o TFVC através do Visual Studio.
Para que serve:
O TFVC é um repositório de código fonte e controlador de versão. Esse tipo de ferramenta é especialmente útil quando trabalhamos em equipe, e precisamos ter a garantia de que o trabalho de um integrante da equipe não vá sobrepor o trabalho de outros.
Em que situação o tema é útil:
Quando várias pessoas trabalham num mesmo projeto, é grande a chance de ocorrer conflitos entre o trabalho que cada um executa. O Team Foundation Version Control minimiza esse risco, oferecendo recursos que lhe permitem evitar estes conflitos, resolvê-los no momento em que ocorrem ou até mesmo recuperar o seu trabalho em uma situação mais grave.
Resumo do DevMan
Um dos pilares do ALM (Application Lifecycle Management - Gerenciamento do Ciclo de Vida da Aplicação) é o repositório de código fonte. Um repositório de projetos que permita o desenvolvimento simultâneo de vários programadores, com gerenciamento de conflitos e principalmente o controle de versão das modificações realizadas é essencial para quem busca uma ferramenta ALM de verdade. O Visual Studio Team System, dentre as dezenas de funcionalidades que oferece, tem como um dos seus principais recursos o TFVC (Team Foundation Version Control), através do qual seu projeto deixa de estar em uma simples pasta no seu computador e passa a ser armazenado seguramente em um servidor TFS (Team Foundation Server).
Na edição passada da .NET Magazine (edição 67) publicamos um artigo a respeito da instalação e configuração do Team Foundation Server e Visual Studio Team System. Esse universo que podemos chamar simplesmente de Team System é composto de um servidor (Team Foundation Server), que pode ser acessado através do Visual Studio. Todo esse conjunto de funcionalidades permite a implementação de um ambiente de ALM (Application Lifecycle Management) para o gerenciamento do ciclo de vida de aplicações.
O Team System oferece um número muito grande de recursos, que você pode ter uma ideia através da Figura 1. Não é possível falar sobre todos esses recursos em um único artigo, e por isso eu sugiro que você leia o artigo da edição anterior para ter uma ideia do esforço que é a instalação e configuração deste ambiente.
O ALM (Application Lifecycle Management) é um tópico do desenvolvimento de software que agrega muitos conceitos. Quando estamos falando do gerenciamento do ciclo de vida de uma aplicação, estamos falando de: Análise de Requisitos, Modelagem, Arquitetura, Desenvolvimento, Gerenciamento de Mudanças (Manutenção), Testes, Controle de Versão etc. Cada um destes itens pode ser compreendido como uma etapa do ciclo de vida do software. O conceito de ALM vem ganhando um recente destaque, principalmente por conta da grande quantidade de ferramentas que surgiram para atender a essa necessidade. Uma delas, é claro, é o Visual Studio Team System que é o foco deste artigo.
Neste artigo vamos tratar do Team Foundation Version Control, que você pode ver bem ao centro da Figura 1. Não é por menos que o TFVC é considerado o principal recurso do Team System, já que é ele que garante o armazenamento seguro do bem mais precioso de uma equipe de desenvolvimento: o código fonte.
De uma forma abrangente dizemos que o TFVC é responsável pelo gerenciamento de código fonte, oferecendo funcionalidades como: Check-out e Check-in simples; Check-out múltiplo; Workspaces; Changesets; Label de versões; Branches; Resolução de conflitos; Merge de código; Check-in policies; Annotate; Check-in por procuração; Compare; entre diversos outros recursos que facilitam muito o controle do código fonte em projetos com mais de um desenvolvedor.
Figura 1. O universo do Visual Studio Team System / Team Foundation Server
Sistema de controle de versão
Umas das necessidades mais emergentes no desenvolvimento de software é o controle de versão dos projetos. O Sistema de Controle de Versão (VCS - Version Control System) é basicamente um software responsável por gerenciar as versões de um conjunto de documentos, ou no nosso caso, de um conjunto de arquivos que compreende um projeto.
No desenvolvimento de software, um sistema de controle de versão é essencial para mantermos um controle das versões do nosso código fonte.
Um sistema de controle de versão deve manter um histórico fiel de todas as modificações realizadas no projeto durante o seu ciclo de vida. Esse histórico é especialmente útil para rastrearmos determinados eventos e até mesmo desfazer uma alteração que não deveria ter sido feita. A possibilidade de termos um histórico de tudo o que aconteceu com nosso código fonte nos abre um leque de possibilidades do ponto de vista gerencial.
O controle de versão oferece uma segurança muito maior para se trabalhar em equipe, já que a ferramenta deve oferecer recursos para o gerenciamento de conflitos. Na prática isso significa que se duas pessoas alteram um mesmo arquivo do projeto, a ferramenta deve oferecer mecanismos para que ambas as alterações sejam aproveitadas. No TFVC isso é conhecido como Merge, e veremos mais detalhes de como isso funciona adiante.
Antes da criação do Team System e o Team System Version Control, a ferramenta para controle de versão da Microsoft era o Visual SourceSafe. Na verdade, essa ferramenta ainda é muito utilizada hoje. Não vamos entrar nos detalhes que diferenciam o SourceSafe do TFVC. Para nós, neste momento, só basta saber que o SourceSafe é simplesmente um sistema de controle de versão, enquanto o TFVC é parte do Team System, que abrange todo o ALM. O TFVC é a parte do Team System responsável pelo gerenciamento do código fonte.
Trabalhando com um Team Project
No Team System temos o chamado Team Project. O Team Project, ou projeto de time, é um projeto do Team System onde todos os recursos de um determinado projeto são armazenados. Dentre esses recursos, vamos ter toda a documentação do projeto, a possibilidade de classificar todos os requisitos e tarefas em Work Items e assim por adiante. E, é claro, no Team Project podemos associar o código fonte do nosso projeto.
...