Uso Básico do Subversion

De LCAD
Revisão de 17h17min de 1 de setembro de 2009 por Dijalma (discussão | contribs)
Ir para: navegação, pesquisa

Criação de um Repositório

Para criar um repositório no subversion 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 criar 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