Uso Básico do Subversion

De LCAD
Ir para: navegação, pesquisa

Criação de um Repositório

Para criar um repositório no subversion, logado na lcad2 como root, digite os seguintes comandos:

svnadmin create /var/www/svn/nome_do_repositorio
chown apache:apache /var/www/svn/nome_do_repositorio -R

Obs.: Somente o administrador do sistema pode criar um repositório.

Para solicitar a criação de um repositório, clique no link Contato.

Inclusão de Usuários em um Repositório Existente

Para incluir um usuário em um repositório existente, edite o arquivo como root (em lcad2):

/var/www/svn/accessvn 

No nome do repositório na seção [groups], acrescente o login no LCAD do novo usuário.

Importando um Repositório para o Subversion

Primeiramente, o repositório deve ser criado e usuário deve ter uma conta no subversion. Para importar um repositório para o Subversvion digite o seguinte comando:

svn import nome_do_repositorio http://www.lcad.inf.ufes.br/svn/nome_do_repositorio/-m "messagem" --username login_do_usuario 
  

Criando uma Cópia de um Repositório na sua Máquina

Para criar uma cópia de um repositório na sua máquina local digite o seguinte comando:

svn co http://www.lcad.inf.ufes.br/svn/nome_do_repositorio/ --username login_do_usuario

Os repositórios disponíveis são: scae, MAE e roteiros.

Comandos Básicos do SVN

Para listar os comandos básicos, use

svn help 

Tipicamente você vai precisar dos comandos: svn checkout, svn status, svn update, svn add, svn del, svn commit e svn diff.

Para conhecer mais sobre cada comando, utilize:

svn help [comando]

Realizando merge entre o branch e o trunk

O comando svn merge faz o merge entre dois repositórios, um branch (relato3) e o trunk (SCAE). Esse comando não é propriamente um merge, basicamente ele funciona fazendo o diff entre o branch e o trunk e aplica as diferenças encontradas à cópia de trabalho. Durante esse processo de merge, os arquivos, que foram deletados ou renomeados no branch ou que só existe no trunk e não no branch, serão deletados. Uma maneira de recuperar esses arquivo é por meio do svn copy, conforme explicaremos a seguir.

Para realizar o merge do branch (relato3) para o trunk (SCAE), primeiramente, baixe uma cópia do trunk e do branch do SVN:

svn co http://www.lcad.inf.ufes.br/svn/scae/code
svn co http://www.lcad.inf.ufes.br/svn/scae/branchs

Para verificar as mudanças que serão realizadas pelo merge, digite:

cd code
svn merge --dry-run http://www.lcad.inf.ufes.br/svn/scae/code http://www.lcad.inf.ufes.br/svn/scae/branchs/relato3

O comando acima ainda não fez o merge, apenas mostrou quais modificações que serão realizadas pelo merge

Para realizar o merge, digite:

cd code
svn merge http://www.lcad.inf.ufes.br/svn/scae/code http://www.lcad.inf.ufes.br/svn/scae/branchs/relato3

O comando acima realiza o merge do branch (relato3) para o trunk (SCAE) mostrando na tela do usuário as modicações realizadas. Verifique se o merge deletou algum arquivo do repositório trunk que não deveria ser apagado.

Antes de recuperar os arquivos apagados, o commit deve ser realizado. Para "commitar" as modificações, digite:

svn ci -m "Realizando o merge do relato3 para o SCAE."

A partir da saída do merge, verifique os arquivos ou diretórios que deseja recuperar. Para recuperar um diretório ou arquivo, digite:

cd code/CORES
svn copy -r <revisão antes do commit> http://www.lcad.inf.ufes.br/svn/scae/code/CORES/PNN_CORE .

O comando acima é executado para cada arquivo ou diretório apagado pelo merge.

Para finalizar, devemos "commitar" os arquivos ou diretórios recuperados:

svn ci -m "Recuperando os diretórios e os arquivos apagados durante o processo de merge do relato3 para o SCAE."

Referência Completa

Há uma referência on-line completa dos comandos do SVN em:

http://svnbook.red-bean.com/nightly/pt_BR/svn.ref.html

Há também um livro, em pdf, em:

http://svnbook.red-bean.com/

Exemplos Úteis

  • Verificando os updates disponíveis:
[flibio@lcad16 DB_CORE]$ svn status -u
       *       37   db_core.h
?                   db_core
       *       37   table_lib.c
M              37   ports.cfg
       *       37   db_core_rpcs.c
       *       37   db_core.c
Status contra revisão:     40