Universidade Federal de São Carlos Departamento de Computação Tutorial de uso do Subversion com RapidSVN João Celso Santos de Oliveira Orientação: Prof.ª Dra. Marilde T. P. Santos - São Carlos - Agosto de 2010
Sumário APRESENTAÇÃO... 3 1 - CONCEITOS FUNDAMENTAIS... 4 2 - OBTENDO SUBVERSION... 6 Ambiente MS Windows... 6 Ambiente GNU/Linux... 7 3 USANDO O SUBVERSION... 8 Obtendo uma cópia local... 8 checkout... 8 Modificando uma cópia local... 9 editar arquivo... 9 bloqueio de arquivo... 10 adicionando diretórios e arquivos... 11 copiando e movendo... 12 compartilhar modificações (commit)... 13 REFERÊNCIAS... 15
APRESENTAÇÃO Este tutorial faz parte das atividades desenvolvidas por João Celso Santos de Oliveira, aluno do curso de Ciências da Computação do Departamento de Computação da UFSCar (Universidade Federal de São Carlos), ingressante em 2010. As atividades citadas se referem ao programa de Bolsa Atividade oferecido pela ProACE (Pró-reitoria de Assuntos Comunitários e Estudantis da UFSCar) e foram efetivadas sob orientação da Prof.ª Dra. Marilde T. P. Santos durante o ano de 2010. Este tutorial pretende fornecer informações referentes ao uso do sistema de gerenciamento de versões Subversion através do cliente gráfico RapidSVN (http://rapidsvn.tigris.org/). Está em fase de desenvolvimento por isso ainda faltam informações e casos de uso. Uma leitura mais completa sobre o assunto pode ser feita com o livro oficial do projeto Subversion e outros links listados nas Referências. Para mais informações relacionadas ou sugestões entre em contato por e-mail: joaocelso@comp.ufscar.br; ou joaocelso.so@gmail.com.
1 - CONCEITOS FUNDAMENTAIS Subversion, também chamado de 'svn', é um sistema de controle de versão, isto é, gerencia arquivos, diretórios e as mudanças feitas sobre eles mantendo um histórico que permite a recuperação de versões anteriores de cada documento, ou ainda verificar quais mudanças ocorreram entre uma versão de um documento e outra. É gratuito e de código aberto. A cada atualização em algum conjunto de diretórios ou arquivos do repositório é gerada uma nova revisão. A primeira revisão, na criação do repositório, é a número 1 e ao receber alterações o repositório se diz em uma nova revisão de identificador numérico imediatamente superior. Subversion permite que várias pessoas em diferentes computadores possam trabalhar nos repositórios ao mesmo tempo. De onde estiverem, essas pessoas podem possuir permissões para modificar um mesmo conjunto de arquivos e diretórios contidos no repositório, numa produção colaborativa. Para um grupo de usuários de um repositório num servidor svn on-line, um usuário A poderá obter uma cópia local de trabalho dos arquivos e diretórios do repositório. Na cópia local, podem ser feitas todas as edições necessárias, seja editando os arquivos existentes, adicionando novos arquivos e diretórios ou mesmo apagando e movendo objetos na cópia local. Terminada a edição, o usuário A deverá compartilhar seu trabalho enviando suas modificações para o servidor onde automaticamente o repositório on-line se torna modificado e qualquer outro usuário tem acesso a uma versão mais recente do mesmo. O trabalho colaborativo precisa ser organizado. Se não o for abre-se a possibilidade de existirem várias pessoas editando o mesmo arquivo ao mesmo tempo, talvez fazendo mudanças incompatíveis, e logo alguém poderá ter perdido horas de trabalho. Por isso o Subversion é capaz de trabalhar com travas em arquivos, um mecanismo que toma as permissões de edição de um arquivo apenas ao dono da trava.
Quando um usuário A deseja editar um arquivo deve primeiro verificar se não está travado. Se o arquivo estiver livre para edição o usuário A poderá travá-lo como se deixasse aos outros usuários a mensagem estou editando este arquivo e não gostaria que alguém o modificasse enquanto isso!. Logo após terminar a edição, ao enviar as mudanças ao servidor, a trava é automaticamente retirada. Outra solução disponibilizada pelo Subversion é a possibilidade de mesclar objetos de um repositório. Supondo que um usuário A edita uma parte de um arquivo e um usuário B trabalha em outra parte do mesmo arquivo de forma que um não interfere no trabalho do outro. Se torna desnecessário travar o arquivo pois quando o usuário A envia seu trabalho para o servidor e após o usuário B faz o mesmo, o Subversion reconhece edições em partes distintas do documento e mescla os trabalhos. No caso em que ambos os usuários editem a mesma parte do texto. Se o usuário A enviar seu trabalho primeiro o servidor irá aceitar como uma edição comum. Quando o usuário B tentar enviar seu trabalho o servidor irá avisar que há um conflito, isto é, que a mesma parte do texto, na versão do documento no repositório, também foi modificada recentemente. Neste ponto é quando o usuário B deverá decidir o que fazer: abandonar seu trabalho e aceitar a versão do repositório, manter sua versão rejeitando o trabalho do usuário A ou ainda reescrever a parte do texto para que não se perca nenhuma das alterações sugeridas. A forma como o Subversion gerencia os arquivos permite que seja de objetivo geral, isto é, não apenas para gerenciamento de código fonte para softwares, mas capaz de gerenciar toda espécie de textos em geral e outros arquivos como imagens, áudios, vídeos, outros tipos binários, etc.
2 - OBTENDO SUBVERSION Para uso do Subversion é necessário que computador tenha instalado um software cliente e acesso ao servidor on-line. Há uma variedade de clientes disponíveis para vários sistemas operacionais com interfaces gráfica, para linha de comando e também como plug-ins para IDE's e até para o MS Windows Explorer. Deixamos como sugestão o RapidSVN (http://www.rapidsvn.org). É gratuito, open-source e disponível para vários sistemas operacionais. Ambiente MS Windows Obtenha o instalador em http://www.rapidsvn.org/.
Ambiente GNU/Linux Deve-se verificar se o pacote 'rapidsvn' é disponibilizado pela distribuição: Debian/Ubuntu Gentoo Procure o pacote rapidsvn # aptitude install rapidsvn Procure o pacote rapidsvn # emerge -a rapidsvn
3 USANDO O SUBVERSION Obtendo uma cópia local A primeira tarefa é conhecer o repositório. Um repositório pode ser público, onde qualquer um na rede pode acessá-lo como usuário anônimo. Geralmente repositórios públicos dão aos anônimos apenas permissões de leitura. Simularemos um repositório privativo onde, para obter acesso, os usuários precisarão de login e senha cadastrados. No texto vamos dar ao repositório o endereço fictício de http://servidor/tutorial e usar o login fictício 'editor' e uma senha qualquer. checkout Para obter uma cópia local do repositório usamos o comando checkout. local. Criamos um diretório em 'Desktop' com o nome 'trabalho'. Nele será colocada nossa cópia Com o RapidSVN acessamos o menu 'Repositório' 'Checkout' e preenchemos com o endereço do repositório e o endereço onde deve ser salvo localmente. senha. Como é necessária autenticação para acesso ao nosso repositório, são pedidos usuário e
O diretório 'trabalho' contém agora todos os arquivos e configurações para que possamos usar o repositório online. Pode ser manipulado como um diretório comum (copiado, movido, apagado), sendo possível levá-lo num pendrive ou distribuí-lo a outras pessoas. Modificando uma cópia local editar arquivo Edita-se um arquivo da maneira tradicional. Por exemplo, para editar o arquivo 'saudacoes.txt' podemos acessá-lo pelo diretório
'trabalho', abri-lo, editá-lo com um editor de texto preferido e salvar. Ou ainda um duplo clique sobre o nome do arquivo na listagem do RapidSVN irá abrir o arquivo com o editor padrão. Verifique que, após a edição, o ícone do arquivo 'saudacoes.txt' no RapidSVN está em vermelho indicando que o arquivo foi modificado. bloqueio de arquivo Se é desejado bloquear um arquivo para evitar que seja modificado por outros usuários enquanto se está editando usa-se o comando 'bloquear' (ou 'lock'). Clique com o botão direito sobre o arquivo a ser editado e escolha 'Bloquear...'. Será aberta uma janela para edição de um comentário justificando o bloqueio do arquivo. Após o bloqueio, o ícone se modifica.
Ao terminar a edição a trava deve ser retirada. Isto ocorrerá automaticamente quando o usuário enviar o trabalho para o servidor ou também pode ser feito clicando com o botão direito do mouse sobre o arquivo no RapidSVN e escolhendo 'Desbloquear'. Outros usuários também podem ter bloqueado o arquivo para edição, neste caso, ao atualizar a cópia local (se a opção 'Visualizar' 'Recarregar e Atualizar' estiver checada) o arquivo aparecerá com ícone modificado e com o nome do dono do bloqueio. online. Neste caso, não é possível enviar as modificações locais do arquivo para o repositório adicionando diretórios e arquivos A adição de diretórios e arquivos é feita em duas partes.
Primeiro é necessária a criação destes objetos no diretório de trabalho local como sendo diretórios ou arquivos comuns, depois se faz a adição manual destes ao sistema de versões. Criamos no diretório 'trabalho' um subdiretório com nome 'joao' e um arquivo texto simples com nome 'joao.txt', ambos vazios. Observe que no RapidSVN ambos diretório e arquivo criados são listados com ícone diferenciado revelando que estão presentes entre os arquivos mas não estão versionados. Para o diretório, clicamos com o botão direito do mouse e selecionamos 'add'. Também podemos usar 'Adicionar recursivo' iria adicionar ao projeto todo o conteúdo do diretório. Para o arquivo, clicamos com o botão direito e selecionamos 'add'. O diretório e o arquivo agora fazem parte da cópia local. copiando e movendo Copiar e mover arquivos e diretórios diretamente no sistema de arquivos é semelhante a
adição. Primeiro se copia ou move e depois se diz ao RapidSVN o que aconteceu. Porém é muito mais vantajoso mover ou copiar usando a interface do RapidSVN. Na interface do RapidSVN, arrastamos o arquivo de texto 'joao.txt' para o diretório 'joao'. Ele irá perguntar se pretendemos copiar ou mover. Escolhemos copiar. compartilhar modificações (commit) Para compartilhar as modificações feitas na cópia local são necessárias basicamente duas ações: atualizar as informações e enviar o trabalho. Para atualizar clique no botão correspondente. Não havendo nenhum outro editor trabalhando no repositório ao mesmo tempo, não haverá atualizações. Para enviar o trabalho clique no botão correspondente e preencha um comentário.
REFERÊNCIAS site: http://svnbook.org/ site: http://www.rapidsvn.org/index.php/documentation