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.
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
