Tutoriais‎ > ‎Ferramentas‎ > ‎

TortoiseSVN

postado em 3 de nov de 2012 15:54 por Prof. Rodrigo Costa   [ 5 de set de 2013 04:52 atualizado‎(s)‎ ]

O subversion é um Sistema de Controle Versão (SCV) centralizado que existe desde outubro de 2000, conhecido por ser gratuito e de código aberto. Um SCV é gerencia arquivos e diretórios, e as modificações feitas neles ao longo do tempo, sendo bastante útil para acompanhar as alterações de arquivos durante o desenvolvimento de projetos. 

Uma prova de sua importância foi um relatório feito pela Forrester Research em 2007 que constatou o SVN como líder no segmento de controle de versão. Até hoje, este sistema é utilizado por grandes empresas no Brasil e no mundo, você pode perceber que nas seguintes vagas [1][2] e [3] é requisitado a experiência no uso deste SCV. 
Se você gostou deste tutorial ou ele lhe foi útil, clique em curtir.

Um SCV centralizado funciona da seguinte forma, existe um repositório (onde são controladas todas as versões dos arquivos). Para um usuário começar a interagir com um repositório,  faz-se necessário obter uma cópia local do repositório através de uma operação chamada de checkout. Esta operação foi marcada como (1) na figura abaixo.  

Todo desenvolvedor tem sua própria cópia de trabalho local, algumas vezes conhecido como sandbox, no seu PC local. Com a cópia local, os usuários podem começar a trabalhar e fazer alterações nos arquivos. Nesta fase, marcada como (2) na figura acima, o usuário pode inserir arquivos na cópia local, alterar arquivos, remover arquivos da cópia local. Alterar ou remover os arquivos não é uma solução final, pois quando você se sincronizar com o repositório, ele irá considerar que você acidentalmente removeu o arquivo, pois seu repositório local não foi modificado. Os comandos svn add, svn move e svn delete, são responsáveis, por modificar seu repositório local,  tornando possível adicionar, remover ou mover arquivos no repositório local, respectivamente.

Antes de poder enviar suas alterações no sistema, o usuário deve atualizar sua cópia local, unificando as alterações feitas por outros usuários com o seu repositório local (4). Durante o passo 4 podem acontecer problemas de sincronismo, ou seja, outro usuário pode ter alterado o mesmo arquivo que o usuário alterou em seu repositório local, assim é necessário resolver esses problemas através de operações de da mesclagem ou resolução de conflito, marcado como (5) . Após resolver os problemas, pode-se submeter suas alterações através de operação de commit

Pode-se realizar a interação com o servidor utilizando comandos em prompt de comando, mas uma interface gráfica pode simplificar bastante o processo de interação com o repositório. Dentre as diversas disponíveis na net, particularmente, gosto do TortoiseSVN, uma ferramenta que é fácil de instalar e também de utilizar, pois ela se integra o WindowsExplorer.

1. Instalando o SVN

O TortoiseSVN é bastante simples de instalar. Inicialmente você precisa escolher qual versão instalar:
Após fazer o download, o usuário deve clicar duas vezes no arquivo de instalação e seguir as instruções. O instalador cuida de tudo pelo usuário e após a reinicialização do sistema, o TortoiseSVN estará integrado ao Windows Explorer. Ao clicar com o botão direito em qualquer pasta ou em qualquer espaço vazio da área de trabalho, você poderá ver as operações:
  • SVN Checkout: responsável por fazer o download de um repositório e criar a cópia local.
  • Tortoise SVN: criar novos repositórios na máquina local e configurar opções do Tortoise.

2. Manipulação básica do Tortoise

Para baixar uma cópia local de um repositório, clica-se com o botão direito em qualquer espaço vazio da área de trabalho e em seguida clica-se em SVN Checkout, conforme mostrado na figura abaixo à esquerda. Na interface, digita-se o url do servidor, por exemplo svn://servername/myproject
 
Após inserir as credenciais do usuário, sua cópia local está criada e o usuário pode realizar os seguintes comandos com apenas um clique do mouse:
  • Update: atualizar sua cópia local para a versão mais recente do repositório;
  • Commit: enviar suas alterações para o repositório;
  • Add: inserir arquivos no seu repositório;
  • Diff: verificar as diferenças entre um arquivo do repositório local e sua versão mais recente no repositório;
  • Delete: remover arquivos do repositório;
  • Reverter: cancela todas as alterações feitas, restaurando as alterações dos arquivos para a versão mais recente do repositório;
  • Revision Graph: mostra em um gráfico o histórico das alterações;
  • Show Log: mostra uma tabela com o histórico das alterações, bem como os comentários feitos a cada interação.

3. Enviando suas alterações

Ao fim de um dia de trabalho, todo desenvolvedor deve fazer o seu commit fazendo com que suas alterações sejam disponibilizada aos demais desenvolvedores, ao clicar com o botão direito na pasta e em seguida clicar em svn commit (mostrado à esquerda). 

Após clicar em commit, surge uma janela em que o usuário pode escolher quais arquivos vai realmente comitar e é importante deixar uma mensagem aos demais desenvolvedores, indicando o conteúdo de suas alterações.



Após inserir os comentários, o usuário clica em OK e envia as alterações, ao final do processo, é mostrado o status do commit.

4. Configurações adicionais

Para versionar apenas arquivos importantes ao projeto, deve-se evitar enviar arquivos desnecessários ao repositório. Por exemplo, não há necessidade de versionar arquivos usados durante o processo de montagem e compilação (.o, .a, .dll). Ou então, arquivos com a extensão .bak também não são necessários pois o SVN já versiona os arquivos. Assim, ao invés de tomar esta preocupação manualmente, pode-se configurar o TortoiseSVN para ignorar os arquivos.

Para ignorar os arquivos clique em qualquer lugar da área de trabalho > Tortoise SVN > Settings, clica-se na aba Gerenal e digita a extensão a ser ignorada em Global Ignore Pattern. Neste campo, preenche-se as extensões ou diretórios digitando as extensões separadas por espaços. No meu computador,  esta configuração está assim: 
*.bak *.bin *.layout *.depend *.o *.a *.so *.dll 


Comments