Вы находитесь на странице: 1из 17

Universidade Federal de São Carlos

Departamento de Computação

Tutorial de
Manutenção do Subversion

João Celso Santos de Oliveira


Orientação: Prof.ª Dra. Marilde T. P. Santos

- São Carlos -
Dezembro de 2010
Sumário

INTRODUÇÃO........................................................................................................... 3
1 - CONCEITOS FUNDAMENTAIS DO SERVIDOR SVN...................................4
O servidor Apache........................................................................................................................... 4
O Subversion....................................................................................................................................4
O WebSVN...................................................................................................................................... 5
2 – CONFIGURAÇÕES DO SERVIDOR.................................................................6
Acessando o servidor (ssh).............................................................................................................. 6
MS Windows................................................................................................................................6
GNU/Linux..................................................................................................................................8
Subversion....................................................................................................................................... 8
Usuários, Senhas e Permissões........................................................................................................ 8
WebSVN.......................................................................................................................................... 9
3 – GERENCIANDO UM REPOSITÓRIO SVN...................................................11
Criação de um repositório..............................................................................................................11
Adicionando repositório ao apache................................................................................................13
Adicionando usuários.................................................................................................................... 14
Configurando permissões de acesso.............................................................................................. 14
Disponibilizando o repositório pela rede.......................................................................................15
Fazendo Backup.............................................................................................................................16
REFERÊNCIAS.........................................................................................................17
INTRODUÇÃO

Este tutorial faz parte das atividades desenvolvidas por João Celso Santos de Oliveira, aluno
do curso de Ciências da Computação do Departamento de Computação da UFSCar (Universidade
Federal de São Carlos), ingressante em 2010.

As atividades citadas se referem ao programa de Bolsa Atividade oferecido pela ProACE


(Pró-reitoria de Assuntos Comunitários e Estudantis da UFSCar) e foram efetivadas sob orientação
da Prof.ª Dra. Marilde T. P. Santos durante o ano de 2010.

Este tutorial pretende fornecer informações referentes às atividades de manutenção mais


comuns no ambiente do sistema de gerenciamento de versões Subversion, também conhecido como
svn (http://subversion.apache.org/).

Contato,

Joao Celso S. Oliveira : joaocelso.so at gmail.com.


1 - CONCEITOS FUNDAMENTAIS DO
SERVIDOR SVN

Um administrador do Subversion deve primeiramente estar a par de como o sistema


funciona, em nosso caso, o servidor svn do DC/UFSCar.

O servidor Apache

O software Subversion pode ser configurado sobre um servidor de várias maneiras, no nosso
caso está rodando como módulo de um servidor Apache em uma máquina Linux.

Apache é o webserver adotado. A página do projeto é http://www.apache.org.

Ele já está configurado e rodando então nosso interesse é apenas em suas configurações
relacionadas com o svn.

Módulos do apache são responsáveis por fornecer não só a interface para o subversion mas
também a autenticação de usuários e uma interface web para o repositório (WebSVN).

O Subversion

Como já foi dito, o subversion está configurado como módulo do servidor apache.

O trabalho com o subversion é simples: criar um repositório , adicioná-lo às configurações


do apache, adicionar usuários, configurar as permissões de acesso, adicioná-lo às configurações do
WebSVN, disponibilizar o repositório pela rede e fazer backup.

A página do projeto é http://subversion.apache.org/.


O WebSVN

O WebSVN é um aplicativo escrito em PHP que usa a estrutura do apache para fornecer
uma interface web com o Subversion.

A página do WebSVN é http://www.websvn.info/.


2 – CONFIGURAÇÕES DO SERVIDOR

Neste capítulo estão informações sobre as configurações do servidor do sistema subversion.


São abordadas algumas características mas sempre se pode encontrar outras referências na internet,
como na página oficial do projeto: http://subversion.apache.org/.

Acessando o servidor (ssh)

O administrador deverá ter acesso direto à máquina do servidor (linux) via ssh se utilizando
de usuário e senha com permissões necessárias para a manutenção.

Existem vários clientes ssh.

MS Windows

No Windows poderá ser usado o Putty:

● http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

O Putty não necessita instalação. Após


download, já poderá ser executado.

Com os dados do servidor em mãos, digite o endereço, a porta e clique no botão 'open' que o
Putty se encarrega de fazer a conexão. No nosso exemplo, o ip do servidor é 192.168.142.128 e a
porta a se usada é a número 22 (porta padrão para conexões seguras ssh).
Durante a negociação com o
servidor é feita uma verificação de
certificados digitais então é possível
que apareça um alerta do Putty
confirmando a intenção de se
conectar a um servidor
desconhecido. Confirme.

Após feita a conexão, o servidor


irá requisitar usuário e senha.
Obtendo sucesso, o administrador terá acesso ao
terminal do sistema operacional do servidor e estará
apto a fazer as configurações necessárias.
GNU/Linux

Em sistemas GNU/Linux pode-se usar o cliente ssh padrão junto ao terminal, geralmente o
openssh.

Num terminal digite o ip mais a opção de login (exemplo: “-l root”):

$ ssh 192.168.142.128 -l root

Uma forma mais comum é “usuario”@“servidor”:

$ ssh root@192.168.142.128

Durante a negociação com o servidor é feita a verificação de certificados digitais então é


possível que seja pedida a confirmação da intenção de se conectar a um servidor desconhecido.
Confirme.

$ ssh root@192.168.142.128
The authenticity of host '192.168.142.128 (192.168.142.128)' can't be
established.
RSA key fingerprint is 88:ee:6a:bd:4c:12:d7:1d:84:bd:02:b1:ab:61:c2:8e.
Are you sure you want to continue connecting (yes/no)?

Seguindo será pedida a senha para o usuário fornecido e então será dado acesso ao terminal
do sistema.

Subversion

A configuração do subversion será feita posteriormente, de acordo com os repositórios a


serem criados.

Usuários, Senhas e Permissões

Para facilitar a manutenção do repositório, uma opção é manter os mesmos usuários e


senhas válidos para todos os respositórios e então atribuir ou restringir permissões de leitura e
escrita conforme a necessidade.

O arquivo de usuários escolhido está em '/etc/apache2/svn.passwds'. Consiste apenas de


uma lista de nomes de usuários ao lado de suas respectivas senhas critografadas.
Para criar um arquivo novo usa-se o seguinte comando que cria o arquivo com o usuario
'joao':

# htpasswd -c /etc/apache2/svn.passwds joao

Serão pedidas a senha e a confirmação de senha do usuário.

Para adicionar um outro usuário, por exemplo um usuário 'celso', usamos o seguinte
comando:

# htpasswd /etc/apache2/svn.passwds celso

Serão pedidas novamente a senha e a confirmação de senha do usuário adicionado.

E para remover um usuário:

# htpasswd -D /etc/apache2/svn.passwd “login”

Onde “login” é o nome do usuário.

De forma semelhante as permissões de acesso estarão num arquivo global em


'/etc/apache2/svn.access'.

As permissões serão configuradas adiante durante a configuração dos repositórios, mas é


importante que ele exista, mesmo que em branco, para forçar a necessidade de configuração das
permissões. Se ele não existe, o seguinte comando irá criár um arquivo vazio:

# echo “” >> /etc/apache2/svn.access

WebSVN

A configuração geral do WebSVN está no arquivo '/etc/websvn/apache.conf'. Nela estão as


opções gerais de acesso. Utilizamos a seguinte configuração:

<Directory /usr/share/websvn>
DirectoryIndex index.php
Order allow,deny
Allow from all
AuthName “Repositório Subversion (GBD)”
AuthType Basic
AuthUserFile /etc/apache2/svn.passwds
Require valid-user
<ifModule mod_php4.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
</ifModule
</Directory>

Onde a linha 'AuthType' diz que é requerida uma autenticação do tipo básica. No momento
da autenticação o repositório se identifica pelo texto fornecido a 'AuthName' e usa o arquivo do
caminho em 'AuthUserFile' para obter logins e senhas válidos, no caso será usado o nosso arquivo
global '/etc/apache2/svn.passwds'.

Embora seja possível configurar repositórios individualmente, no nosso caso, o websvn foi
configurado de forma que todos os repositórios do diretório '/srv/svn/' serão disponibilizados na
interface web (reservados os direitos de leitura e escrita a serem configurados posteriormente).

Isto está definido na seguinte linha do arquivo '/etc/websvn/config.php':

$config->parentPath('/srv/svn');

Uma vez configurado desta forma, repositórios recém-criados no diretório serão incluídos
na interface automaticamente a quem tiver direito de leitura.

Outra configuração importante é apontar qual o arquivo que define permissões de leitura e
escrita. Isto se define na seguinte linha:

$config-> useAuthenticationFile('/etc/apache2/svn.access');
3 – GERENCIANDO UM REPOSITÓRIO
SVN

Para tratar dos passos do gerenciamento de um repositório SVN vamos usar como exemplo
este projeto de Tutorial seguindo os passos já sugeridos anteriormente:

● Criação de um repositório;

● Adicioná-lo às configurações do apache;

● Adicionar usuários;

● Configurar as permissões de acesso;

● Disponibilizar o repositório pela rede;

● Fazer backup;

Criação de um repositório

O primeiro passo é criar um diretório onde ficarão alocados os arquivos de configuração do


nosso repositório.

Poderão haver vários repositórios que hospedarão trabalhos diferentes e terão configurações
diferentes. A primeira escolha é um local padrão para alocar repositórios. O local escolhido é o
/srv/svn/ que já está configurado para o WebSVN.

Neste local criamos o diretório que irá alocar nosso repositório para o projeto de Tutorial.

# cd /srv/svn
# mkdir tutorialsvn

O diretório está vazio. O seguinte comando irá criar nele um repositório vazio:
# svnadmin create /srv/svn/tutorialsvn

Dentro do diretório existem agora vários subdiretórios contendo arquivos de configuração.

O próximo passo é adicionar o que já temos ao repositório.

No nosso caso já temos um diretório projetado anteriormente para ser adicionado ao


repositório em /root/diretorioModelo.

Este diretório foi pensado com um layout que melhor servirá ao repositório do projeto em
andamento.

Para adicionar o conteúdo de /root/diretorioModelo ao repositório usaremos o seguinte


comando:

# svn import /root/diretorioModelo file:///srv/svn/tutorialsvn \


-m “Importando primeiro conteudo do projeto”

“file:///srv/svn/tutorialsvn” é o endereço do repositório. 'file://' indica que é um repositório


localizado no computador local, assim como 'http://' indicaria que o repositório está na rede.

'-m “mensagem”' é uma opção para documentar a ação.

Geramos agora a revisão numero 1.

Para visualiza o conteúdo do repositório usamos:

# svn list file:///srv/svn/tutorialsvn

Desta forma o repositório já está pronto para uso local, mas como nossa intenção é
disponibilizá-lo online deve-se observar que atualmente todo conteúdo do repositório tem como
dono o usuário do sistema operacional root, que nenhum outro usuário possui permissões de escrita
e que o servidor apache roda como o usuário www-data. Basta redefinir dono e grupo no conteúdo
do repositório:

# chgrp -R www-data /srv/svn/tutorialsvn


# chown -R www-data /srv/svn/tutorialsvn
Adicionando repositório ao apache

Agora podemos fazer a configuração do apache para que disponibilize nosso repositório on-
line.

O arquivo de configuração a ser editado está em '/etc/apache2/mod-available/dav_svn.conf'.


Ele contém as informações de todos os repositórios disponibilizados pelo servidor.

# nano /etc/apache2/mods-enabled/dav_svn.conf

Adicionaremos uma nova tag '<Location>' ao fim do arquivo.

Existem diversas configurações possíveis. Usaremos uma com as seguintes características:

• Repositório acessível pelo endereço http://192.168.142.128/tutorialsvn:

◦ Definido em '<Location tutorialsvn>'.

◦ Se houver um diretório real no site com o mesmo endereço a configuração do


subversion irá falhar.

• Repositório localizado em '/srv/svn/tutorialsvn';

◦ SVNPath /srv/svn/tutorialsvn.

• Autenticação apache básica;

◦ AuthType Basic.

• Na autenticação, o nome do repositório será “Tutorial SVN”;

◦ AuthName “Tutorial SVN”.

• O arquivo das senhas será o global já criado em /etc/apache2/svn.passwds;

◦ AuthUserFile /etc/apache2/svn.passwds

• O arquivo de permissões de leitura e escrita está em /etc/apache2/svn.access;

◦ AuthzSVNAccessFile /etc/apache2/svn.access

• Acesso apenas para usuários validados.

◦ Require valid-user
Teremos a seguinte estrutura:

<Location tutorialsvn>
DAV svn
SVNPath /srv/svn/tutorialsvn
AuthType Basic
AuthName “Tutorial SVN”
AuthUserFile /etc/apache2/svn.passwds
AuthzSVNAccessFile /etc/apache2/svn.access
Require valid-user
</Location>

Adicionando usuários

Os usuários serão adicionados ao arquivo de usuários global em '/etc/apache2/svn.passwds'.


Para modificá-lo, repita os comandos citados anteriormente.

Configurando permissões de acesso

Edita-se o arquivo de permissões '/etc/apache2/svn.access'.

Nele indicamos o nome do repositório e o diretório seguido dos usuários e suas permissões
('r' e/ou 'w', ou vazio).

Neste exemplo vamos inicialmente negar todas as permissões a todos os usuários


cadastrados através do caracter genérico '*' ( “* = “), então dar permissões de leitura e escrita ao
usuário 'joao' (“joao = rw”) e apenas de leitura ao usuário 'celso' (“r”).

[tutorialsvn:/]
*=
joao = rw
celso = r

Pode-se atribuir permissões diferentes de leitura e escrita a cada subdiretório do repositório,


basta indicar o local na tag “[tutorialsvn:/'endereço']” e listar os usuários em seguida.

Por exemplo, cada usuário tem um projeto individual e secreto. Adicionamos então as
seguintes linhas.
[tutorialsvn:/projetodoJoao]
*=
joao = rw

[tutorialsvn:/projetodoCelso]
*=
celso = rw

Também existe a opção de formar grupos de usuários. Para isso adiciona-se no início do
arquivo a tag [groups] seguida de nomes de grupos e usuários como abaixo.

[groups]
editores = joao, celso
administradores = joao
tutorialsvn = joao

Definidos os grupos, para usálos basta adicionar o prefixo '@' ao nome.

[tutorialsvn:/]
*=
@editores = rw
@administradores = r
celso = r

Lembramos que as permissões serão atribuídas na ordem em que aparecem no arquivo, isto
é, as linhas mais abaixo sobrepõem as mais acima.

Disponibilizando o repositório pela rede

Com as configurações prontas, podemos reiniciar o servidor apache para que o diretório
fique disponível on-line.

# /etc/init.d/apache2 restart

A partir deste momento, os usuários poderão acessá-lo pela rede se utilizando de um


programa cliente ou através da interface web do WebSVN.
Fazendo Backup

O subversion possui um comando próprio para backup.

Se quisermos um backup do repositório 'tutorialsvn' para um diretório:

# svnadmin hotcopy /srv/svn/tutorialsvn diretorioBackupSvn/tutorialsvn-backup

É criada uma cópia idêntica que pode substituir a original apenas movendo o diretório de
backup no lugar da original.

Para arquivar o backup podemos comprimir o arquivo:

# tar c diretorioBackupSvn/tutorialsvn-backup >> backup2010-12-01.tar


REFERÊNCIAS

site: http://svnbook.org/

site: http://www.apache.org/

site: http://subversion.apache.org/.

site: http://websvn.tigris.org/

Вам также может понравиться