O documento fornece uma introdução sobre o Subversion, um sistema de controle de versão open source. Explica os principais conceitos como repositório, versionamento e cópias locais versus cópias de trabalho. Também descreve o modelo copy-modify-merge para resolução de conflitos e fornece exemplos de comandos básicos como checkout, update e commit.
2. O que é o Subversion? Máquina do tempo Software de controle de versões open source/livre que proporciona a capacidade de vários desenvolvedores modificarem e gerenciarem os mesmos arquivos do projeto mesmo estando em máquinas diferentes. Porque uma máquina do tempo?!Pois ao utilizar o Subversion temos cada versão do nosso arquivo gravada ao ser modificada e se algo der errado você pode simplesmente voltar para uma versão anterior. Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
3. Conceitos Repositório É uma central de armazenamento de dados. É como o servidor que armazena o projeto atual e os arquivos antigos que foram modificados na nova versão. Versionamento É a prática de armazenar as versões anteriores de arquivos modificados além da atual, criando assim uma árvore (revisiontree) na qual os galhos (branchs) são versões diferentes dos arquivos. Cópia local X Cópia de trabalho A cópia de trabalho será aquela armazenada no servidor. “É a versão atual do projeto”. Cópia local será uma versão da cópia de trabalho que o usuário baixa para o seu próprio HD. Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
4. Problema O que acontece se dois usuários modificam o mesmo arquivo ao mesmo tempo? Resposta A versão do último usuário a enviar o arquivo será a versão final e o trabalho do outro usuário ficará “escondido em uma versão anterior”. Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
5. O copy-modify-merge O copy-modify-merge é um modelo de utilizado pelo Subversion para contornar o problema apresentado no slide anterior. Como funciona: Cada usuário faz uma cópia local da cópia de trabalho. Os usuários então editam apenas a sua cópia local do arquivo. Ao mandar o arquivo para o repositório serão fundidas as cópias de trabalho e cópia local. Além do copy-modify-merge temos o lock-modify-unockmas este modelo possui mais problemas. (Apesar de ser mais apropriado para trabalhar com arquivos binários). Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
6. Situação Empresa Júnior de Computação da UnB Os usuários 1 e 2 fazem suas cópias locais do arquivo e trabalham nele. Então “1” grava a sua versão no repositório. Quando “2” for tentar gravar o dele receberá o erro “out-of-date” indicando que o seu arquivo está desatualizado.Cabe então a “2” pedir ao software que faça o “merge” (fundir os arquivos). Como as alterações não se sobrepõem o usuário precisará apenas gravar no servidor esta nova versão que será uma fusão dos arquivos de “1” e “2”. E se os arquivos se sobrepõem? O software indicará conflito e ao fazer o “merge” manterá esta parte do código de ambos os arquivos no arquivo fundido. Cabe aos usuários decidir a versão mais adequada e retirar a outra. (O programa não tem como fazer isso automaticamente). DIRTI - Diretoria de Tecnologia da Informação
7. Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
8. Comandos básicos Empresa Júnior de Computação da UnB Checkout- Baixar O checkout deve ser dado no início do projeto para baixar a cópia de trabalho para sua cópia local. Update - Atualizar O update é utilizado quando a sua cópia está desatualizada (out-of-date). Depois de feito o update será indicado se existem conflitos nos seus arquivos. Merge – Fundir Caso o seu arquivo esteja desatualizado você poderá realizar o merge para juntar o seu arquivo com a versão atual da cópia de trabalho. Commit – Upar Após realizadas as alterações em sua cópia local tiverem sido feitas você deve enviá-las para o repositório utilizando o commit. DIRTI - Diretoria de Tecnologia da Informação
9. Clientes TortoiseSVN (W) – fica integrado ao Windows Explorer RapidSVN (W,L,M) – Possui uma interface própria Subeclipse(W,L,M) – Integrado a plataforma de desenvolvimento Eclipse Empresa Júnior de Computação da UnB DIRTI - Diretoria de Tecnologia da Informação
10. Instalando o subeclipse Empresa Júnior de Computação da UnB O subeclipse é um plugin para adicionar a SVN na IDE multi-linguagens eclipse. Para instalar o subeclipse você deve: Abrir o eclipse Ir para Ajuda (help) -> Instalar novo software (Install new software) Em “workwith” você deve selecionar a opção: “Subclipse1.6.x Update Site - http://subclipse.tigris.org/update_1.6.x” Selecionar os pacotes que você deseja (obrigatóriamente o subeclipse) Continuar normalmente com a instalação. *A instalação dos outros softwares mencionados é comum. DIRTI - Diretoria de Tecnologia da Informação
11. Dúvidas? Empresa Júnior de Computação da UnB Renato Leal renatoleal@cjr.org.br Diretor de Tecnologia da Informação+55 (61) 9994-2312______________________________CJR - Empresa Júnior de Computação+55 (61) 8447-8868 / 3107-6400www.cjr.org.br DIRTI - Diretoria de Tecnologia da Informação