Uso Básico do TortoiseSVN

De ccppbrasil.org

Antes de mais nada, gostaria de enfatizar o conceito de que a estrutura de pastas / diretórios de projetos deve ser bem planejada antes de se começar a utilizar um repositório. Esta estrutura será refletida no repositório, e portanto projetos que se utilizem de partes de outros (como um projeto usando uma biblioteca, por exemplo) devem ter sua estrutura de pastas / diretórios idêntica nas máquinas de todos os desenvolvedores.

As estruturas sugeridas no site do subversion são bem adequadas, segundo minha pouca experiência.

Isto não é uma necessidade imperativa, apenas uma das tantas "boas práticas", que, na minha experiência, economiza bastante trabalho de ajustes nos arquivos de make , *.dsw ou similares.


Tabela de conteúdo

Configuração básica

Para usar o TortoiseSVN, é interessante se fazer uma pequena alteração nas suas configurações:

Arquivo:TORTOISESVN cfg 001.png


As diferenças estão nos ' da primeira pasta, General e nos check-boxes da pasta Dialogs.

Na pasta General se deve configurar os padrões de arquivos que serão ignorados pelo repositório. No caso do MS Visual Studio, uma lista básica é a seguinte:

*.obj *.pdb *.pch *.ilk *.exe *.idb *\Debug *\Release

e a configuração ficaria assim:

Arquivo:TORTOISESVN cfg 000.png


E na pasta Dialogs:

  • Only use spellchecker when tsvn:projectlanguage is set para que ele não faça a verificação ortográfica, e
  • Contact the repository on startup para automatizar um pouquinho mais a operação.

Veja como fica:

Arquivo:TORTOISESVN cfg 002.png

Importe para o repositório: import

Para usar o TortoiseSVN, devemos primeiramente colocar algo no repositório.

Antes de prosseguir, faça uma cópia de segurança dos arquivos que pretende passar para o repositório!

Escolha uma pasta onde tenha um projeto e remova do projeto todos os arquivos que o compilador pode criar novamente.

No exemplo abaixo, existe apenas um arquivo de código-fonte teste.cpp na pasta teste, e vamos importar toda a pasta para o repositório:

Arquivo:TORTOISESVN import 001.png


Note que o processo de importar pede algum descritivo de texto para o que se está fazendo. Isto é um procedimento comum em todas as operações que vão incluir ou alterar arquivos no repositório:

Arquivo:TORTOISESVN import 002.png


Note o nome do usuário no caminho de rede do repositório (neste exemplo, o usuário é fares, e obviamente deve ser substituido pelo seu próprio nome de usuário.

Note também que no caminho do repositório também se inseriu um nome de diretório para o projeto em questão. Isto é necessário para organizar o próprio repositório.

Após alguns segundos, surge a tela de confirmação:

Arquivo:TORTOISESVN import 003.png


Estrutura para cópias de trabalho

Agora é necessário criar uma estrutura de pastas para as suas cópias de trabalho, por causa do modo com que o Subversion trabalha com versões temporárias (trunk), versões oficiais (tags) e versões derivadas (branches):

Arquivo:TORTOISESVN checkout 001.png


Obtenção de cópia de trabalho: checkout

Agora, depois de criar a estrutura de pastas, vamos criar uma cópia de trabalho a partir do projeto que foi enviado para o repositório, fazendo um checkout:

Arquivo:TORTOISESVN checkout 002.png


Note que para o destino foi incluido o nome de uma pasta que ainda não existe, mas o TortoiseSVN irá criá-la automaticamente, mostrando apenas um diálogo pedindo a confirmação da criação da pasta.

Arquivo:TORTOISESVN checkout 003.png


Após o checkout, temos o relatório da atividade como confirmação do que foi feito:

Arquivo:TORTOISESVN checkout 004.png


A seguir (pode ser necessário pedir um refresh para o Windows® Explorer, teclando F5), a pasta e o(s) arquivo(s) que foram recebidos do repositório são exibidos com um ícone que mostra que eles estão atualizados:

Arquivo:TORTOISESVN checkout 005.png


Note que, além do(s) arquivo(s) agora também existe uma pasta oculta (pode ser necessário alterar os parâmetros de visualização do Windows® Explorer para poder visualizar esta pasta), que é onde o Subversion guarda informações do arquivo de modo a poder determinar se o arquivo foi alterado ou não sem precisar consultar o repositório. Neste diretório também se encontram outras configurações, como a lista de arquivos que devem ser ignorados pelo controle de versões (veja mais adiante).


Editando a cópia de trabalho

Agora vamos editar o arquivo e ver o que acontece.

Este é o arquivo original:

Arquivo:TORTOISESVN commit 001.png


Agora está com uma linha a mais:

Arquivo:TORTOISESVN commit 002.png


Logo após salvar o arquivo (pode ser necessário pedir um refresh para o Windows® Explorer, teclando F5), a pasta que contém o arquivo alterado e o próprio arquivo mostram um ícone diferente:

Arquivo:TORTOISESVN commit 003.png


Efetivação da alteração para o repositório: commit

Para enviar as alterações para o repositório, usa-se a função commit:

Arquivo:TORTOISESVN commit 005.png


Como da vez anterior, deve-se descrever o que foi alterado. Estes comentários serão úteis para localizar diferenças e eventuais problemas:

Arquivo:TORTOISESVN commit 006.png


E, como sempre, um relatório da operação é apresentado:

Arquivo:TORTOISESVN commit 007.png


Atualização do estado da cópia local em relação ao repositório: update

Para se ter certeza, antes de fazer um commit ou um checkout, é uma boa prática atualizar as informações do repositório, fazendo um update:

Arquivo:TORTOISESVN commit 004.png


Resolução de conflitos: diff e merge

Agora suponha que outra pessoa que esteja trabalhando no mesmo projeto precisou editar o mesmo arquivo em que você está trabalhando.

Veja a versão de seu colega:

Arquivo:TORTOISESVN commit 008.png


Agora a sua, logo após salvar (note que os ícones do arquivo e da pasta sinalizam que você alterou a cópia de trabalho).

Arquivo:TORTOISESVN commit 009.png


Ao se desejar fazer o commit de toda a cópia de trabalho, ou seja, a pasta completa do projeto, veja o resultado:

Arquivo:TORTOISESVN commit 010.png


O relatório mostra que seu arquivo foi modificado na cópia de trabalho, mas mostra que foi feita alguma alteração no repositório, e que você precisa atualizar sua cópia de trabalho antes de mais nada.

Mas a cópia de trabalho foi alterada. Se você fizer a atualização agora, aparentemente perderia tudo o que foi feito.

Só que não é isso o que acontece. Vamos fazer o que o programa está pedindo e atualizar a cópia de trabalho.

Logo após a atualização, ele cria alguns arquivos e mostra a seguinte tela:

Arquivo:TORTOISESVN commit 011.png


A montagem a seguir mostra o conteúdo dos arquivos gerados e do original:

Arquivo:TORTOISESVN commit 012.png


Não é necessário alterar manualmente nenhum dos arquivos, pois já existe uma ferramenta própria, embutida no TortoiseSVN, para tratar conflitos:

Arquivo:TORTOISESVN commit 013.png


Arquivo:TORTOISESVN commit 014.png


Depois de inserir os blocos de texto de cada um dos arquivos, basta salvar as alterações pelo próprio ícone na barra de ferramentas, e depois marcar como solucionado, que também tem um ícone na mesma barra de ferramentas:

Arquivo:TORTOISESVN commit 015.png


Note que os ícones do arquivo e de sua pasta voltaram à forma que mostra apenas que sua cópia de trabalho está alterada. Agora basta dar um comando commit como já foi visto acima, e seu trabalho estará salvo no repositório.



Retornar para a configuração e uso do Tortoise SVN

Retornar para a página inicial

Ferramentas pessoais