Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - LDAP

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Criar e usar um servidor SVN

Colaboração: André Murbach Maidl

Data de Publicação: 09 de Setembro de 2005

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

Veja a relação completa dos artigos de André Murbach Maidl

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.08/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.1 /5 (870 votos)

Opinião dos Leitores

igor
23 Mar 2009, 10:37
O tutorial está bastante claro, mas uso o OpenSuse e os comandos para criar o arquivo de senha não estão dando certo, me retorna que o comando "htpasswd" não existe.Qual o o comando para criar este arquivo no Suse?Alguém pode me ajudar?Obrigado
Adriano Henrique
16 Mar 2009, 16:57
Gostaria de saber em qual Diretório o SVN coloca os arquivo, estou querendo ver o tamanho dessa pasta, mas quando eu vejo na pasta /var/svn/ , ela está sempre no mesmo tamanho!
Edson
07 Fev 2009, 16:29
Também estou configurando um servidor subversion e esta dando esse erro abaixo, o q pode ser?

O documento XML não está associado a estilos. A estrutura do documento é representada abaixo.

<D:error>
<C:error/>
<m:human-readable errcode="13">
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>

Alexandre
06 Ago 2008, 10:54
Muito bom tuto =).
Adalberto Joco
29 Nov 2007, 18:41
Descobri a solução do problema de acentuação, citado no meu comentário acima.

------------------
Em Painel de Controle/Sistema/Avançado clique em Variáveis de ambiente, em variáveis do usuário x voce adiciona a variável LANG com valor en_US.
------------------

Quem tiver dúvidas sobre o CMS Drupal esta convidado a conhecer nossa comunidade. http://www.drupalbrasil.com
Felipe
27 Nov 2007, 11:29
Bom dia.....sem conhecimento dessa ferramenta queria obter maiores informações sobre sua utilidade, buscando uma ferramenta para criar uma base de conhecimentos encontrei essa, necessito uma orientação de como utilizar em meus projetos.

Desde já agradeço

Felipe Simões
adalberto joco
22 Nov 2007, 10:30
André,

Parabéns pelo artigo, mto útil.

Estou com um problema de acentuação(abaixo).
----------------------------
163o foi poss?\195?\173vel convert?\195?\170-lo de/p
----------------------------
Encontrei a opção --encoding, mas não consegui usar, pois é uma opção de um sub-comando e não encontrei qual.
----------------------------
Windows XP PRO SP2 Portugues
----------------------------
antecipadamente agradeço
Marco
18 Mai 2007, 11:07
Pessoal,
consegui instalar e configurar com o apache2 o meu svn, mas to com um problema:
So consigo acessar meu repositorio via http localmente, e queria poder acessar de qualquer lugar.
alguem sabe o q fazer, se é alguma permissao ou algo parecido???
desde já agradeço.
Silveira Neto
10 Mai 2007, 20:13
Só um detalhe, comigo o usuário do apache foi www-data.
Cleber Ramos
16 Abr 2007, 14:18
Boa tarde, configurei tudo, mas esta dando o seguinte erro:


O documento XML não está associado a estilos. A estrutura do documento é representada abaixo.

<D:error>
<C:error/>
<m:human-readable errcode="13">
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>

Obrigado
Joao Pedro Lemes
12 Abr 2007, 13:45
Beleza,

axei um tuto em http://samuca.wordpress.com

[]'s
Joao Pedro Lemes
12 Abr 2007, 13:43
Axei também um bom tutorial para utilizar em linha de comando o subversion...

http://samuca.wordpress.com

[]s
Tiago
28 Mar 2007, 10:13
Estou configurando agora o svn, porém não conheço muito bem o linux. Pelo o que eu segui o tuto não é necessário instalar o trac para configurar o servidor svn. Porém não consigo acessar o meu servidor e nem me lembro de ter dado nome à ele. Gostaria de saber, e me perdoem pela ignorancia, como saber o nome do meu servidor. Estou usando dois tutos desta comunidade. Um é esse e o outro é "Instalando e Integrando o Subversion e o Trac". Desde já agradeço.
sidnei
14 Nov 2006, 15:28
Texto de cvs
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Aprenda Inglês em Casa
Metodo inovador e criativo, para quem tem pouco tempo. Veja os depoimentos de nossos alunos.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson