Desenvolvimento

4 mai, 2007

Utilizando o Controlador de Versões

Publicidade

Quando se está desenvolvendo em equipe (2 ou mais pessoas), o controle de versões dos artefatos do projeto, como por exemplo documentação e código fonte, fica inviável de ser feito manualmente. Para ilustrar bem a questão, confesso que tive problemas com meu penúltimo livro quando recebi os retornos dos revisores. Em meu último livro, intitulado Visual Studio Team System Rocks, não vacilei e trabalhei com uma ferramenta de controle de versão.

Adotando uma ferramenta para gerenciar essa tarefa, ganhamos produtividade e, com disciplina, eliminamos problemas de retrabalho com perda de arquivos e versões inconsistentes.

Pasta de trabalho – (Working Folder)

A forma mais comum de se utilizar o controlador de versões é manter uma versão local onde são feitas as alterações e depois submetidas à base centralizada.

Working folder (pasta de trabalho) é a definição dada para um diretório na máquina local dos integrantes da equipe onde são baixados todos os arquivos para consulta e edição.

Cada pessoa tem sua forma de organizar os arquivos no computador, porém, recomendamos que seja definido um padrão de diretório para todos os integrantes da equipe, pois existem arquivos que referenciam outros dentro do mesmo projeto, e se a pasta de trabalho não for padronizada, essas referências ficarão quebradas. Definiremos que o diretório padrão para a pasta de trabalho, será: C:\VSSBase.

Para definir a pasta de trabalho no Microsoft Source Safe, clique com o botão direito sobre a raiz dos projetos e selecione: “Set Working Folder…”

Digite o caminho “C:\VSSBase” e clique em ok

Pronto, agora todos os projetos partindo dessa estrutura serão manipulados no diretório “C:\VSSBase”. Você poderá definir outra pasta de trabalho para projetos específicos, caso não queira que tudo seja manipulado no mesmo diretório, inclusive poderá definir uma pasta compartilhada pela rede de um outro computador ou servidor de arquivos.

Criando projetos

O que entendemos como diretórios o Microsoft Source Safe trata como projetos. Para criar um novo projeto, selecione a pasta (projeto) que conterá o novo projeto, clique com o botão direito e selecione “Create Project…”.

Digite o nome do projeto que você está criando, obedecendo as mesmas regras de criação de diretórios do sistema operacional. Caso deseje, coloque na caixa”Comment” um comentário sobre o projeto

Adicionando arquivos a projetos

Para adicionar arquivos aos projetos, selecione o projeto e clique em File/Add Files…

Se preferir utilize a opção na barra de ferramentas:

Localize o(s) arquivo(s) na janela auxiliar e clique em “Add”

Novamente você poderá adicionar comentários para os arquivos adicionados caso deseje.

Conceito Check-In / Check-Out – Editando Arquivos

Para alterar um arquivo, você sempre precisará reservá-lo com check-out, depois de fazer as alterações, utilizar check-in, para subir a nova versão para o database. Esse processo funciona como um semáforo, e impede que um arquivo seja alterado por duas pessoas, a não ser que o database esteja configurado para aceitar múltiplos check-outs. Para reservar um arquivo para edição, selecione o arquivo, clique com o botão direito e escolha “Check-out”, você poderá cadastrar um comentário para a alteração que irá fazer.

09

O arquivo ficará com um ícone vermelho indicando o estado de check-out:

Agora você pode abrir o arquivo e realizar as alterações necessárias.

Para subir a nova versão do arquivo, realizamos o processo de check-in, depois de salvar o arquivo, selecione-o, clique com o botão direito e escolha “Check-in”, a janela de comentários será exibida novamente para que você cadastre o comentário final e a nova versão do arquivo será armazenada no database.

Multiple Check-Out / Merge Check-In

O Visual Source Safe também oferece o suporte para a configuração de ambientes onde um mesmo arquivo pode ser alterado simultaneamente por dois ou mais usuários, essa é uma configuração interessante para ambientes onde existem fontes que precisem constantemente serem alterados por um mesmo desenvolvedor. Para isso é necessário habilitar isso na interface de administração do repositório do Visual Source Safe dentro das opções do Database (Veja figura abaixo) a opção “Allow multiple checkouts”.

Trabalhando em um ambiente com múltiplos check-outs.

Quando estamos trabalhando em ambiente com múltiplos check-outs, se faz necessário a demonstração da situação de uso onde um arquivo é alterado simultaneamente por mais de um usuário.

Bom o primeiro impacto que podemos verificar é que o ícone de um arquivo com check-out em ambientes de múltiplos check-outs é um pouco diferente, veja abaixo:

Abaixo ilustramos passo a passo um cenário de alterações simultâneas.

Imagine que o arquivo teste.cs será alterado simultaneamente pelo Usuário A e pelo Usuário B.

1. Usuário A faz o check-out do arquivo para edição e implementa algumas modificações conforme a figura abaixo:

A imagem do lado esquerdo é a do arquivo original, a do lado direito é o arquivo editado pelo usuário A.

2. Usuário B faz o check-out do arquivo para edição;

Nesse momento o Visual Source Safe irá alertar o Usuário B que já existe um usuário com esse arquivo em check-out:

O Usuário B deverá clicar em “Yes” para continuar com a ação de check-out.

Abaixo as alterações que o usuário irá realizar no mesmo arquivo:

Mais uma vez a imagem da esquerda é o arquivo original, e dessa vez o da direita é o arquivo editado pelo usuário B.

3. O Usuário A salva o arquivo e faz o check-in das suas alterações;

4. O Usuário B salva o arquivo e faz o check-in das suas alterações;

Nesse momento o Visual Source Safe reconhece que houveram mais de um check-in do mesmo arquivo e pede a permissão ao último usuário para que seja feito um “merge” das duas versões ajustando os conflitos;

5. O Visual Source Safe “entende” as alterações feitas pelo dois usuários e faz o merge dos arquivos, veja como ficou o arquivo:

E se os dois usuários alterarem a mesma linha de código ?

Em um ambiente que permite múltiplos check-outs, podem acontecer situações em que dois usuários tentam alterar a mesma linha do código fonte simultaneamente, nesses casos o último usuário a realizar o check-in terá que tomar a decisão de como será a real versão do fonte.

O Visual Source Save exibe automaticamente uma janela igual a janela a baixo para que seja feito a decisão final de como deve ficar o arquivo:

Depois que o arquivo estiver corretamente acertado no frame “Merged Version” (parte inferior), é só clicar em “Save” e fechar a janela, que o check-in será realizado com aquela versão.

Baixando a ultima versão de um projeto

Para manter sua pasta de trabalho atualizada, ao iniciar a alteração dos insumos do projeto, selecione o projeto e baixe as últimas versões dos arquivos, para isso, basta selecionar o projeto, clicar com o botão direito e escolher “Get Latest Version…”

O Source Safe exibirá a janela “Get”, para você selecionar o local onde deseja baixar os arquivos, se você não alterar o local ele assume a estrutura hierárquica idêntica partindo do “C:\VSSBase”. Para baixar projetos e sub-projetos, selecione as opções “Recursive” e “Build tree (override working folders)”, dessa forma você terá a última versão de todos os insumos do projeto.

Recuperando o Histórico de versões – (Show History…)

A maior vantagem da utilização do controlador de versão é a possibilidade de voltarmos facilmente para uma versão mais antiga de um determinado arquivo ou projeto.

Para visualizar o histórico de versões de projetos ou arquivos, selecione o arquivo ou projeto e escolha “Show History…”:

O Source Safe exibirá uma janela com todas as versões do arquivo ou projeto selecionado.

Nessa janela você poderá visualizar (View), recuperar (Get), voltar a versão (RollBack) e comparar duas versões de um mesmo arquivo (Diff). Alem de emitir relatórios e permitir atachar uma versão.

Voltando versões de um arquivo

Para voltar a versão de um arquivo, selecione a versão que você deseja que seja recuperada e clique em rollback.

O Source Safe irá exibir uma janela de alerta informando que algumas versões (as intermediárias entre a última versão e a versão que está sendo recuperada) serão perdidas. Confirme clicando em “Yes”.

O Source Safe irá exibir uma janela de alerta informando que algumas versões (as intermediárias entre a última versão e a versão que está sendo recuperada) serão perdidas. Confirme clicando em “Yes”.

Note na figura abaixo que a versão 2 do arquivo foi perdida e não poderá mais.

IMPORTANTE: Tenha cuidado ao utilizar RollBack, pois as versões intermediárias sempre são perdidas.

Comparando Versões de Arquivos – (Show History / Show Differences…)

Podemos visualizar também as diferenças entre as versões de um mesmo arquivo, isso sempre auxilia quando precisamos identificar um bug de um arquivo de código fonte ou apenas para visualizar as diferenças de uma versão para outra de um mesmo arquivo.

Para ver as diferenças entre versões de um mesmo arquivo, selecione o arquivo e peça o a janela de histórico de versões, utilize a tecla CTRL para selecionar as duas versões do arquivo e clique em “Diff”.

O Source Safe exibirá a janela “Difference Options”, nela você poderá configurar as diferenças que você quer considerar na análise.

A melhor forma para se analisar diferenças de conteúdo dos arquivos texto de forma visual é manter a janela configurada com o a imagem acima.

Clique em “OK” e o Source Safe exibirá a janela com os dois arquivos selecionados e as diferenças entre eles serão descritas por fontes de cores diferentes, observe a legenda abaixo da janela.

Comparando Diretórios e Projetos – (Show Differences…)

Você poderá ainda comparar um projeto do Source Safe com um outro projeto no Source Safe ou com uma versão que esteja em um diretório no sistema operacional, para isso selecione o projeto que deseja comparar, clique com o botão direito e selecione “Show Differences…”, o Source Safe exibirá a janela “Project Diferences”.

Note que nos campos “Compare” e “To” podem ser selecionados tanto projetos no Source Safe como diretórios do sistema operacional, selecione o projeto ou diretório do sistema operacional que deseja comparar, marque a opção “Recursive” para que o Source Safe considere sub-projetos ou sub-diretórios e compare recursivamente toda a estrutura e clique em “Ok”.

A janela exibida, mostra todas as diferenças entre as estruturas comparadas. Utilize o botão “Reconcile All” para criar uma equivalência entre as versões, baixando os arquivos que não estão no diretório comparado e subindo os diretórios e arquivos que estão no diretório comparado e não estão no projeto do source safe. Essa é uma boa tática para subir grandes conteúdos para uma base do Source Safe, principalmente se as estruturas forem muito complexas e cheia de sub-diretórios.

Abraços!