Copyright © 2004-2005 Leonardo Serra Maciel de Campos
Este documento é licenciado sobre a licença de Atribuição-Compartilhamento da Creative Commons. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/2.0/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
| Histórico de Revisões | ||
|---|---|---|
| Revisão 0.1 | 2004-09-17 10:50:04 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.2 | 2004-09-20 12:06:23 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.3 | 2004-09-20 20:46:01 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.4 | 2004-09-20 23:03:09 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.5 | 2004-09-21 21:54:54 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.6 | 2004-09-22 00:05:11 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.7 | 2004-09-22 09:07:04 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.8 | 2004-09-27 23:50:53 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.9 | 2005-01-29 10:13:49 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 1.0 | 2005-02-20 17:50:52 -0300 | Leonardo Serra Maciel de Campos |
Resumo
Este documento visa ensinar como usar o Subversion para fazer controle de versão.
Índice
O objetivo do projeto Subversion é construir um sistema de controle de versão que seja um substituto para o CVS. O Subversion é liberado sob a licença Apache/BSD-style.
Com o controle de versões podemos gravar o histórico de todos os nossos arquivos. Por exemplo às vezes são criados problemas quando o logicial é modificado, e o programador pode detectar isto muito tempo depois da modificação, acarretando um problema grave para descobrir onde aconteceu tal falha. Com o controle de versões podemos restaurar facilmente as versões antigas para ver exatamente qual mudança gerou tal problema.
Poderíamos, é claro, guardar todas as versões de todos os arquivos que criamos sem a ajuda de uma ferramenta de controle de versão. Porém, além do desperdício de um espaço considerável em disco, o Subversion armazena todas as versões de uma forma inteligente, guardando apenas as diferenças entre as versões. O que é muito mais vantajoso.
Podemos realizar o controle de versão para todo tipo de arquivo. Não apenas para arquivos de codigo fonte, mas qualquer tipo de arquivo, incluindo arquivos binarios.
Será presumido que o seu sistema Debian GNU/Linux e o aptitude estão corretamente configurados.
Apesar da instalação ser para Debian GNU/Linux, os comandos são independentes do sistema operacional e dependentes apenas do Subversion estar instalado, assim apenas a seção de instalação se refere a Debian GNU/Linux.
Também estaremos acreditando que o seu servidor Subversion já se encontra instalado, configurado e rodando de maneira correta. Estaremos acessando o servidor Subversion pelo protocolo WebDAV/DeltaV, pois este é o método de acesso que mais recursos possui.
Apesar de estarmos utilizando o protocolo WebDAV/DeltaV para acessar o servidor Subverion existem outras maneiras de se realizar esta tarefa, para conhecer melhor estas maneiras é recomendado a leitura do livro sobre o Subversion.
A tabelo abaixo mostra as versões de cada logicial usado.
A tabelo abaixo mostra as principais características do ambiente onde foi feito esta documentação.
Tabela 2. Ambiente
| Servidor Subversion | svn.exemplo.com.br |
| Método de acesso ao repositório | http:// |
| Endereço para acesso ao repositório | http://svn.exemplo.com.br/svn/ |
| Servidor proxy | proxy.exemplo.com.br |
| Porta do servidor proxy | 3128 |
Usaremos palavras desta maneira para indicar substituição.
Execute a etapa de instalação como usuário root, as demais etapas não precisam ser realizadas pelo usuário root!
É necessário instalar o pacote do cliente do Subversion, para isto execute:
# aptitude install subversion
Podemos alterar nosso método de acesso de http:// para https://, assim as transações com o servidor serão criptografadas. Para criar uma copia local do repositório desta maneira, execute:
$ svn checkout https://svn.exemplo.com.br/svn/
O Apache2 deve estar configurado para tratar conexões HTTPS.
Caso o Apache2 esteja utilizando um certificado não assinado por uma certificadora autorizada será mostrada as informações do certificado e será necessário aceita-lo manualmente. Para isto responda t para aceitar temporariamente, a para aceitar definitivamente ou r para rejeitar definitivamente.
A opção de aceitar definitivamente o certificado só existe caso as informações de autenticação estejam sendo gravadas, para mudar isto edite o arquivo em ~/.subversion/config e altere a seguinte linha de:
store-auth-creds = no
Para:
store-auth-creds = yes
Caso a linha não exista ou esteja comentada (começando com #), basta acrecentar ela dentro da seção [auth]
Por padrão o cliente Subversion só irá pedir senha durante a primeira conexão com o servidor Subversion, pois o cliente do Subversion irá armazenar a senha e outras informações de autenticação em ~/.subversion/auth. Isto cria possíveis pontos de exploração do servidor Subversion, para mudar isto edite o arquivo em ~/.subversion/config e altere a seguinte linha de:
store-passwords = yes
Para:
store-passwords = no
Caso a linha não exista ou esteja comentada (começando com #), basta acrecentar ela dentro da seção [auth]
Caso a conexão com o servidor Subversion seja atraves de um servidor proxy, edite o arquivo ~/.subversion/servers e acrescente as seguintes linhas:
[global] http-proxy-host = proxy.exemplo.com.br http-proxy-port = 3128
Caso exista algum servidor Subversion que deva ser acessado sem servidor proxy, acrescente a linha abaixo ao arquivo dentro da seção [global], colocando cada servidor separado por virgula.
http-proxy-exceptions = localhost, 192.168.0.1
Criar uma copia local do repositório:
$ svn checkout http://svn.exemplo.com.br/svn/
Esta etapa só é necessária ser executada uma vez.
Atualizando a copia local do repositório:
$ svn update
Altere os arquivos através do seu editor predileto e/ou executando comandos de alteração da estrutura do repositório.
Atualizando a copia local do repositório:
$ svn update
Enviando as alterações para o repositório:
$ svn commit
Criando uma copia local do repositório:
$ svn checkout http://svn.exemplo.com.br/svn/
Isto ira criar uma pasta chamada svn. Todos os outros comandos deverão ser executados dentro desta pasta.
Atualizar o repositório local:
Atualizando a copia local do repositório:
$ svn update
Atualizando a copia local do repositório para a revisão 3:
$ svn -r 3 update
Atualizando trem para a revisão 3 do repositório:
$ svn -r 3 update trem
Alterando a estrutura do repositório:
Adicionando trem ao repositório:
$ svn add trem
A adição de pasta é realizada no modo recursivo. Opcionalmente pode ser passado o parâmetro -N que tornara a adição não recursiva.
Removendo trem do repositório:
$ svn delete trem
A remoção de pasta é realizada no modo recursivo.
A remoção não deve ser feita através do comando rm, pois ela só será apagada após o envio das operações realizadas localmente para o repositório.
Criando uma copia de trem para coisa no repositório:
$ svn copy trem coisa
A vantagem da utilização deste comando é que ele realiza a copia de trem para coisa através do tradicional utilitario cp e em seguencia realiza a adição de coisa ao repositório.
Alterando o nome de trem para coisa no repositório:
$ svn move trem coisa
A vantagem da utilização deste comando é que ele move de trem para coisa através do tradicional utilitario mv, em seguencia realiza a adição de coisa ao repositório e a remoção de trem do repositório.
Criando a pasta trem no repositório:
$ svn mkdir trem
A vantagem da utilização deste comando é que ele cria a pasta trem através do tradicional utilitario mkdir e em seguencia realiza a adição de trem ao repositório.
Monitoramento o repositório
Visualizar o estado de cada arquivo, comparando a copia local com as informações coletadas do repositório no servidor durante a ultima atualização:
$ svn status
Visualizar informações sobre o repositório:
$ svn info
Visualizar os relatórios das mudanças no repositório:
$ svn log
Visualizar os relatórios das mudanças no repositório mostrando apenas as revisões de 3 a 7:
$ svn -r 3:7 log
Visualizar as diferenças entre as revisões de 3 a 7 para trem do repositório:
$ svn -r 3:7 diff trem
Visualizar trem da revisão 3 do repositório:
$ svn -r 3 cat trem
Visualizar a estrutura do repositório da revisão 3:
$ svn -r 3 list
Enviando as alterações para o repositório:
Envio simples:
$ svn commit
Após a execução do comando será aberto o editor definido pelo variavel $EDITOR, dentro do editor é recomendado que seja feito um pequeno resumo de quais foram as alterações realizadas.
Envio simples somente das operações realizadas em trem:
$ svn commit trem
Envio sem abrir o editor, usando parametro para o resumo:
$ svn commit -m "Texto explicando as alterações realizadas"
Envio sem abrir o editor, usando o arquivo explicacao.txt para o resumo:
$ svn commit -F explicacao.txt
O arquivo explicacao.txt não deve fazer parte do repositório, pois isto pode causar um ciclo redundante!
O Subversion é seu amigo e irá lhe ajudar.
Quando houver alguma duvida sobre quais comandos existem, execute:
$ svn help
Quando houver alguma duvida sobre algum comando, execute:
$ svn help comando
O Subversion permite que seja feito acesso direto ao repositório. A vantagem disto é que não é necessario possuir uma copia local do repositorio para rodar os comandos.
$ svn mkdir http://svn.exemplo.com.br/svn/trem
Muitos comandos permitem o acesso direto ao repositório, através da ajuda do Subversion é possivel saber se um comando permite ou não isto!
Alguns comandos ao realizarem acesso direto ao repositório, ao fim do comando realizam um commit imediato.
Com o intuito de facilitar a utilização do Subversion, ele possui abreviações para seus comandos. Abaixo esta a tabela com estas abreviações.
Os seguintes sítios foram usados como base para a criação desta documentação
Sitio do projeto Subversion. http://subversion.tigris.org/.
Livro sobre o Subversion. http://svnbook.red-bean.com/.
Perguntas e respostas sobre o Subversion. http://subversion.tigris.org/project_faq.html.
Minicurso da Unicamp sobre CVS. http://www.ead.unicamp.br/minicurso/cvs/.
O Debian é um sistema operacional (SO) livre para seu computador. Um sistema operacional é um conjunto de programas básicos e utilitários que fazem seu computador funcionar. O Debian usa o kernel (núcleo de um sistema operacional), Linux, mas a maior parte das ferramentas do SO vêm do projeto GNU; daí o nome GNU/Linux.
Conjunto de instruções lógicas. Na informática designa um conjunto de instruções lógicas e suas dependências, também conhecido como programa ou sistema de computador.
Esta palavra é pouco usada no Brasil, onde se usa muito a expressão "Software".
Origem: Wikipédia, a enciclopédia livre.