Depois de sofrer com pequenos detalhes na instalação do SVN, decidi postar todas as minhas anotações efetuada durante a instalação e configuração. Sendo assim, abaixo o meu mini-howto.
Requisitos de software (RPMs):
- apache2
- apache2-doc
- apache2-prefork
- libapr1
- libapr-util1
- neon
- subversion
- subversion-server
- subversion-tools
- subversion-python
- python-pygments
- python-setuptools
- viewvc
Após a instalação dos pacote acima, altere o path no arquivo /etc/sysconfig/svnserve.
SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"
Adicione o usuario e grupo SVN:
useradd -d /srv/svn -s /bin/false svn ; groupadd svn
Na pasta principal do repositório SVN crie as pasta como no exemplo abaixo:
# mkdir -p /srv/svn/repos # mkdir -p /srv/svn/user_access # mkdir -p /srv/svn/html
Levante o serviço SVN:
# rcsvnserve restart
Shutting down svnserve done Starting svnserve done
Configurando o APACHE
Insira os modulos DAV e DAV_SVN:
# a2enmod dav # a2enmod dav_svn
Edite o arquivo apache2 em sysconfig:
# vi /etc/sysconfig/apache2
Insira o conteudo abaixo:
APACHE_SERVER_FLAGS="SVN_VIEWCVS"
E também verifique a presenças dos módulos dav e dav_svn:
APACHE_MODULES="... dav dav_svn"
Gerenciando usuários
Crie um arquivo de senha e de grupo de usuarios:
# touch /srv/svn/user_access/svn_passwdfile # touch /srv/svn/user_access/svn_groupfile # chown wwwrun:root /srv/svn/user_access/* # chmod 640 /srv/svn/user_access/*
Adicione o usuario e a senha:
# htpasswd2 /srv/svn/user_access/svn_passwdfile cabelo New password: Re-type new password:
Defina o grupo do usuário no arquivo svn_groupfile
neti_committers: cabelo neti_readers: cabelo pedrinho guilherme
Criando um repositório:
A seguir, os comando para criar um repositório:
# cd /srv/svn/repos # svnadmin create project1 # chown -R wwwrun:root project1/{dav,db,locks}
Edite o arquivo /etc/apache2/conf.d/subversion.conf como no exemplo abaixo:
<IfModule mod_alias.c> Alias /repos /rede1/svn/html </IfModule>
<Directory /rede1/svn/html> Options +Indexes +Multiviews -FollowSymLinks IndexOptions FancyIndexing \ ScanHTMLTitles \ NameWidth=* \ DescriptionWidth=* \ SuppressLastModified \ SuppressSize order allow,deny allow from all </Directory>
<Location /repos/project1> DAV svn SVNPath /srv/svn/repos/project1
# Limit write access to certain people AuthType Basic AuthName "Authorization for project1 required" AuthUserFile /srv/svn/user_access/project1_passwdfile AuthGroupFile /srv/svn/user_access/project1_groupfile <LimitExcept GET PROPFIND OPTIONS REPORT> Require group project1_committers </LimitExcept> # Limit read access to certain people <Limit GET PROPFIND OPTIONS REPORT> Require group project1_committers Require group project1_readers </Limit> </Location>
Configurando o ViewVC
No arquivo /srv/viewcvs/vewcvs.conf, insira os projetos:
# vi /srv/viewcvs/vewcvs.conf
Insira as linhas abaixo:
svn_roots: project1 : /srv/svn/repos/project1 , project2 : /srv/svn/repos/project2
Reinicie o Apache:
# rcapache2 restart
Algumas Dicas:
Verificando as informações de um repositório
# svnlook info /srv/svn/repos/project1/ cabelo 2010-05-12 18:20:18 -0300 (Qua, 12 Mai 2010) 20 - Versao de entrega.
Criando um diretorio:
$ svn mkdir http://10.0.0.250/repos/project1/NOME-DIRETORIO
Importando um projeto para SVN
# svn import /tmp/myproject http://10.0.0.250/repos/project1 -m "initial import"
Fazendo um CheckOut:
$ svn co http://10.0.0.250/repos/project1 $ svn co http://10.0.0.250/repos/project1 -r 20
Comando commit e update
# svn commit button.c # svn commit --message "Corrected number of cheese slices." # svn update # svn commit --message "Add a few more things"
Backup e restore:
# svnadmin dump /srv/svn/repos/project1 > /tmp/backup.dump # svnadmin load /srv/svn/repos/project1 < /tmp/backup.dump
Editando a string de log:
$ svnadmin setlog /path/to/repository -r 10662 --bypass-hooks message_file.txt
Copiando, movendo, adicionando e excluindo arquivos.
# svn add arquivo.ext # svn delete arquivo.ext # svn copy arquivo1.ext arquivo2.ext # svn move arquivo1.ext arquivo2.ext
Para modificar as propriedades no código fonte, basta inserir as tag abaixo e executar o comando conforme o exemplo:
/* $URL$ $Rev$ $Author$ $Date$ $Id$
*/
# svn propset svn:keywords "URL Rev Author Date Id" was
Bom… por hoje é só…
Um comentário em “SVN na família SUSE/openSUSE”