Criar e usar um servidor SVN | DeServ – Info
Lomadee, uma nova esp閏ie na web. A maior plataforma de afiliados da Am閞ica Latina.

Criar e usar um servidor SVN

By Fl谩vio Silva

Subversion 茅 um software muito usado para controle de vers玫es de sistemas. Muitas vezes desenvolvemos um projeto e precisamos ter um bom controle do seu versionamento, nesse caso o svn 茅 uma ferramenta muito interessante.

Nesse documento est茫o descritas algumas maneiras de configurar um servidor svn e alguns comandos 煤teis para us谩-lo.聽

Os pacotes necess谩rios para a instala莽茫o e configura莽茫o s茫o os seguintes:

   * httpd ou apache ou apache2 (depende da distribui莽茫o)
   * subversion
   * mod_dav_svn ou subversion-server ou libapache2-svn (depende da distribui莽茫o)

Partiremos do princ铆pio que os pacotes necess谩rios j谩 est茫o instalados na m谩quina que ser谩 o servidor svn.

Criar um reposit贸rio svn no servidor

Nos passos abaixo usaremos um reposit贸rio chamado /svn, mas se desejar cri谩-lo em /home/usuario/svn, ou em qualquer outro local desejado, basta trocar /svn pelo qual ser谩 usado em seu servidor.

Antes de criar o reposit贸rio precisamos ter o diret贸rio correspondente no sistema, por isso, use o comando abaixo para cri谩-lo:

 # mkdir /svn

Agora vamos executar o comando necess谩rio para criar o reposit贸rio /svn, vale lembrar que o comando abaixo deve ser executado em um diret贸rio vazio, por茅m, j谩 existente no sistema, pois o subversion ir谩 apenas criar toda a estrutura necess谩ria para o controle de vers玫es, ent茫o execute o comando abaixo para tal procedimento:

 # svnadmin create /svn

Vale uma observa莽茫o aqui, at茅 a vers茫o 1.1 do subversion, o tipo de reposit贸rio padr茫o era o Berkeley DB, mas a partir da vers茫o 1.2 o padr茫o passou a ser o FSFS. O suporte FSFS apareceu na vers茫o 1.1. Na 1.0 apenas o Berkeley DB era suportado.

Para especificar o tipo do reposit贸rio pode-se usar o argumento –fs-type:

 # svnadmin create --fs-type fsfs /svn
 # svnadmin create --fs-type bdb /svn

O reposit贸rio criado estar谩 vazio e come莽ar谩 a contar a partir da revis茫o 0 (zero), a qual corresponder谩 脿 sua cria莽茫o.

Para mais informa莽玫es sobre o tipo do reposit贸rio acesse http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html Configurar o apache

O apache 茅 usado porque al茅m de ser o servidor http mais usual, atrav茅s do m贸dulo mod_dav_svn.so ele consegue acessar um reposit贸rio svn e torn谩-lo acess铆vel para clientes que usam o protocolo WebDAV/DeltaV, (茅 o caso do comando svn, o qual veremos ainda neste documento), ele 茅 uma extens茫o do protocolo HTTP.

Onde o arquivo de configura莽茫o, do subversion, 茅 armazenado pode variar de distribui莽茫o para distribui莽茫o. Por exemplo, ele pode estar tanto em /etc/httpd/conf.d/subversion.conf, como em /etc/apache/conf/conf.d/subversion.conf, ou at茅 mesmo em outro diret贸rio.

Muitas vezes 茅 poss铆vel localiza-lo atrav茅s do comando locate:

 # locate subversion.conf

Por isso, neste documento, trataremos o arquivo de configura莽茫o apenas por: subversion.conf.

Vamos abordar duas formas de configura莽茫o, s茫o elas:

   * acesso irrestrito para leitura e escrita (sem senha)
   * acesso irrestrito para leitura e acesso restrito para escrita (com senha)

Antes de tudo fa莽a um backup do arquivo de configura莽茫o original:

 # cp subversion.conf subversion.conf.orig

Ajustar o dono do svn

Como vamos configurar o apache para o gerenciamento do reposit贸rio, 茅 importante configurarmos o seu dono, pois estaremos lendo e escrevendo no svn atrav茅s do protocolo HTTP.

Mude o dono do diret贸rio /svn de root para apache:

 # chown -R apache.apache /svn

Essa modifica莽茫o 茅 necess谩ria para que o svn fique acess铆vel via http. Caso o usu谩rio root continuasse como dono do diret贸rio e dos demais arquivos, o apache n茫o teria permiss玫es para acess谩-los. Em algumas distribui莽玫es o usu谩rio chama-se www ao inv茅s de apache, verifique o nome do usu谩rio do apache antes de executar esse comando. Acesso irrestrito para leitura e escrita

Abaixo segue um exemplo de configura莽茫o do arquivo subversion.conf para o acesso sem senha. Use-o caso deseje configurar um servidor svn sem senha.

 # inicio do arquivo subversion.conf

 LoadModule dav_svn_module     modules/mod_dav_svn.so
 LoadModule authz_svn_module   modules/mod_authz_svn.so

 <Location /svn>
 DAV svn
 SVNPath /svn
 # desliga senha
 SVNPathAuthz off
 </Location>

 # fim do arquivo subversion.conf

Acesso irrestrito para leitura e acesso restrito para escrita

Abaixo segue um exemplo de configura莽茫o do arquivo subversion.conf para o acesso com senha. Use-o caso deseje configurar um servidor svn com senha para escrita.

 # inicio do arquivo subversion.conf

 LoadModule dav_svn_module     modules/mod_dav_svn.so
 LoadModule authz_svn_module   modules/mod_authz_svn.so

 <Location /svn>
 DAV svn
 SVNPath /svn
 # autenticando um usuario
 AuthType Basic
 AuthName "Subversion repository"
 AuthUserFile /etc/svn-passwd
 # qualquer operacao que nao seja leitura requer um usuario valido
 <LimitExcept GET PROPFIND OPTIONS REPORT>
 Require valid-user
 </LimitExcept>
 </Location>

 # fim do arquivo subversion.conf

Mais informa莽玫es sobre como configurar o arquivo subversion.conf

Criar o arquivo de senha

Se o svn foi configurado com senha, como em um dos exemplos acima, ser谩 necess谩rio criar o arquivo /etc/svn-passwd, ou o correspondente da sua configura莽茫o, onde ser茫o armazenados os usu谩rios, os quais ter茫o acesso de escrita no reposit贸rio /svn e suas respectivas senhas.

Ele pode ser criado por meio do seguinte comando:

 # htpasswd -c /etc/svn-passwd root

O comando acima cria o arquivo /etc/svn-passwd e pede que a senha do usu谩rio root seja informada.

Para adicionar um novo usu谩rio pode-se usar o comando abaixo:

 # htpasswd /etc/svn-passwd andre

O usu谩rio digita a senha e o arquivo 茅 automaticamente atualizado. Ou o usu谩rio executa o seguinte comando:

 # htpasswd -n andre

Envia o resultado do comando para o administrador do svn e ele inclui o usu谩rio e a sua respectiva senha no arquivo correspondente.

Iniciar/Reiniciar o apache

Para efetivar as configura莽玫es e tornar o svn acess铆vel atrav茅s da url: http://nome_do_servidor/svn, precisamos iniciar o apache caso ele esteja parado ou reinici谩-lo, se ele j谩 estiver sendo executado na m谩quina.

O comando abaixo reinicia o apache estando ele ligado ou desligado:

 # service httpd stop && service httpd start

Observe que o comando pode ser diferente dependendo da distribui莽茫o que estiver sendo usada, ou seja, ao inv茅s de httpd pode ser apache ou at茅 mesmo apache2.

Agora o seu reposit贸rio svn j谩 pode ser acessado, usando um navegador qualquer, atrav茅s do link:

http://servidor/svn

Se o servidor svn foi configurado em sua rede, em casa, e n茫o h谩 nenhum dns configurado, para responder pelos nomes das m谩quinas, pode-se usar apenas o ip do servidor:

http://ip_do_servidor/svn

Alguns comandos 煤teis para manusear projetos no svn configurado

Ap贸s criarmos um reposit贸rio svn 茅 interessante conhecermos alguns comandos que possibilitam o manuseio desta ferramenta.

Se uma das vari谩veis de ambiente $SVN_EDITOR, $VISUAL ou $EDITOR n茫o estiverem definidas, provavelmente uma mensagem de erro, semelhante a que segue abaixo, ser谩 exibida ao tentar efetuar uma altera莽茫o no svn.

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the –message (-m) or –file (-F) options svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no ‘editor-cmd’ run-time configuration option was found

Para definir o editor de texto padr茫o, o qual ser谩 usado para escrever os logs dos commits, pode-se usar a seguinte linha de comando:

 # export SVN_EDITOR='vim'

Acima definimos que o editor padr茫o ser谩 o vim.

Para que todos os usu谩rios tenham essa vari谩vel configurada, basta adicionar a linha de comando acima no arquivo /etc/profile.

Criar um diret贸rio no svn

Antes de adicionarmos um projeto em nosso reposit贸rio precisamos criar o diret贸rio onde ele ficar谩 armazenado. Pode-se fazer isso atrav茅s do seguinte comando:

 # svn mkdir http://servidor/svn/projeto

Importar um projeto para o svn

Algumas vezes j谩 temos um projeto em algum canto de nossa m谩quina; Importe-o para o svn usando a linha de comando abaixo:

 # svn import /tmp/projeto http://servidor/svn/projeto

O comando acima importar谩 todos os arquivos do diret贸rio /tmp/projeto para o reposit贸rio projeto em http://servidor/svn/

Uma outra maneira de executar o procedimento acima 茅 acessar o diret贸rio e ent茫o import谩-lo para o svn:

 # cd /tmp/projeto
 # svn import http://servidor/svn/projeto

Baixar um projeto do svn

Quando for preciso efetuar modifica莽玫es em um projeto que j谩 est谩 no svn, antes 茅 preciso fazer o checkout, ou seja, efetuar o download dos arquivos correspondentes ao projeto.

Efetuando o checkout:

 # svn co http://servidor/svn/projeto

Efetivar altera莽玫es em um projeto do svn

Depois de conclu铆das as modifica莽玫es necess谩rias precisamos colocar a nova revis茫o do projeto no svn, para isso precisamos efetuar um commit.

De dentro do diret贸rio principal do projeto efetue o commit:

 # svn commit

Listar arquivos de um projeto

Depois de efetuar v谩rias mudan莽as em um projeto baixado do svn, 茅 importante poder listar o seu conte煤do e saber quais arquivos est茫o armazenados e quais n茫o est茫o no seu respectivo reposit贸rio no svn.

Para isso, execute o seguinte comando no diret贸rio principal do projeto:

 # svn list

Adicionar arquivos a um projeto

No decorrer de um projeto novos arquivos surgem e precisam ser adicionados no reposit贸rio svn.

Para efetuar essa opera莽茫o pode-se usar o seguinte comando:

 # svn add projeto.c

Quando o commit for efetuado, o arquivo projeto.c ser谩 adicionado 脿 谩rvore correspondente do projeto em que estava trabalhando.

Remover arquivos de um projeto

A medida que arquivos v茫o sendo incluso no projetos, h谩 a necessidade de excluir alguns.

Use o seguinte comando para efetuar tal opera莽茫o:

 # svn rm projeto.c

脡 poss铆vel remover um projeto inteiro do svn, para isto basta executar:

 svn rm http://servidor/svn/projeto

Quando o commit for efetuado, o arquivo projeto.c ser谩 removido da 谩rvore onde ele era armazenado e na nova revis茫o ele n茫o far谩 mais parte do projeto.

Verificar as altera莽玫es antes de efetuar um commit

Na maioria das vezes 茅 interessante, antes de efetuar o commit, verificar quais s茫o as modifica莽玫es. Para isso usamos o svn diff. Por茅m, se existirem muitas modifica莽玫es, 茅 preciso jogar a sa铆da do comando para um editor de texto, sendo assim poss铆vel analisar todo o diff gerado.

Executando apenas o svn diff:

 svn diff

Jogando a sa铆da para um editor de texto, no caso o vim:

 svn diff | vim -

Lembrando que o comando acima mostra as diferen莽as do diret贸rio onde foi executado e o seu correspondente no svn. Para verificar todas as modifica莽玫es de um projeto, basta execut谩-lo na raiz principal dele.

Verificar o log de um projeto

Muitas vezes esquecemos o que fizemos, por isso, ao efetuar um commit o svn sempre pede uma mesagem para ser adicionada ao log do projeto.

Para verificar os logs de um determinado projeto: efetue o checkout dele, acesse o diret贸rio onde ele foi baixado e execute o seguinte comando:

       svn log

Obter ajuda dos pr贸prios comandos

Para verificar os comandos dispon铆veis use:

       svn help

Uma s茅rie de comandos, poss铆veis, ser谩 listada. Para obter inform莽玫es sobre um comando em espec铆fico use:

       svn comando --help

[Saiba mais:http://svnbook.red-bean.com/nightly/en/index.html]

Nenhum Post Relacionado.

Artigos parecidos fornecidos por Yet Another Related Posts Plugin.

Tags: , , ,

Deixe uma Resposta