Subversion

O Subversion é um sistema de controle de versões de código aberto. Ele gerencia arquivos e diretórios através do tempo. Uma árvore de arquivos é colocada em um repositório central. Esse repositório é muito parecido com um servidor de arquivos comum, exceto pelo fato de que ele se lembra de todas as alterações feitas nos arquivos e diretórios.

Instalação

Para acessar o repositório Subversion usando o protocolo HTTP você precisa instalar e configurar um servidor web. O Apache2 é recomendado para trabalhar com o Subversion. Por favor consulte a sub-seção HTTP na seção do Apache2 para instalar e configurar o Apache2. Para acessar o repositório Subversion usando o protocolo HTTPS você precisa instalar e configurar um certificado digital no seu servidor web Apache2. Por favor consulte a sub-seção HTTPS na seção do Apache2 para instalar e configurar um certificado digital.

Para instalar o Subversion, execute o seguinte comando no prompt de terminal:

sudo apt-get install subversion libapache2-svn

Configuração do Servidor

Este passo assume que você possui instalado os pacotes acima mencionados em seu sistema. Esta sessão explica como criar um repositório Subversion e acessar o projeto.

Cria um Repositório Subversion

O repositório Subversion pode ser criado usando o seguinte comando de um prompt de terminal:

svnadmin create /path/to/repos/project

Importando Arquivos

Assim que você criar o repositório você pode importar arquivos para ele. Para importar um diretório, digite o seguinte em um terminal:

svn import /caminho/para/diretorio/ file:///caminho/para/repos/projeto

Métodos de Acesso

Repositórios Subversion podem ser acessados (checked out) através de vários métodos diferentes-- no disco local ou através de vários protocolos de rede. Uma localização do repositório é, todavia, sempre uma URL. A tabela descrever como diferentes configurações de URL correspondem aos métodos de acesso disponíveis.

Tabela 14.1. Métodos de Acesso

Esquema

Método de Acesso

file://

acesso direto ao repositório (no disco local)

http://

Acesso via protocolo WebDAV aos servidores web Apache2 dotados de Subversion

https://

O mesmo que http://, mais com criptografia SSL

svn://

Acesso via protocolo customizado para um servidor svnserve

svn+ssh://

Mesmo que svn://, mais através de um túnel SSH


Nessa seção, nós iremos ver como configurar o Subversion para todos esses métodos de acesso. Aqui, nós iremos cobrir o básico. Para detalhes avançados de utilização consulte o livro do svn.

Acesso direto ao repositório (file://)

Esse é o mais simples de todos os métodos de acesso. Ele não requer que nenhum processo do servidor Subversion esteja rodando. Esse método de acesso é usado para acessar o Subversion a partir da mesma máquina. A sintaxe do comando, informado no prompt de um terminal, é a seguinte:

svn co file:///path/to/repos/project

ou

svn co file://localhost/caminho/para/o/repositorio/do/projeto

[Nota]

Se você não especificar o nome do host, haverão três barras (///) -- duas para o protocolo (arquivo, nesse caso) mais a barra inicial do caminho. Se você especificar o nome do host, você deverá usar duas barras (//).

As permissões do repositório dependem das permissões do sistema de arquivos. Se o usuário tem permissão de leitura/gravação, ele pode fazer checkout e fazer commit para o repositório.

Acesso via protocolo WebDAV (http://)

Para acessar o repositório através do protocolo WebDAV, você precisa configurar seu servidor web Apache 2. Você precisa adicionar o seguinte trecho ao seu arquivo /etc/apache2/apache2.conf:

 <Location /svn>
  DAV svn
  SVNParentPath /home/svn
  AuthType Basic
  AuthName "O nome do seu repositório"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 
[Nota]

O trecho de configuração acima pressupõe que os repositórios do Subversion estejam criados no diretório /home/svn/ usando o comando svnadmin. Eles podem ser acessados seguindo a url htpp://hostname/svn/repos_name.

Para importar ou enviar arquivos para seu repositório Subversion através de HTTP, o repositório deve ter o usuário HTTP como dono. Nos sistemas Ubuntu, o usuário HTTP normalmente é www-data. Para mudar o dono dos arquivos de um repositório difite o seguinte comando em um prompt de terminal:

sudo chown -R www-data:www-data /path/to/repos
[Nota]

Mudando o done do repositório para www-data você não poderá importar ou enviar arquivos ao repositório executando o comando svn import file:/// como qualquer usuário diferente de www-data.

A seguir, você deve criar o aquivo /etc/subversion/passwd para armazenar os detalhes de autenticação de usuário. Para criar o arquivo, lance o seguinte comando no prompt de comando (que irá criar o arquivo e adicionar o primeiro usuário):

sudo htpasswd -c /etc/subversion/passwd nome_do_usuario

Para adicionar usuários adicionais, ignore a opção "-c" uma vez que esta substitui o arquivo anterior. Ao invés, utiliza essa forma:

sudo htpasswd /etc/subversion/password user_name

Esse comando irá lhe solicitar a entrada de uma senha. Assim que você informar a senha, o usuário será adicionado. Agora, para acessar o repositório você precisa rodar o seguinte comando:

                    
                      svn co http://servername/svn
                    
                  
[Atenção]

As senhas são transmitidas em texto simples. Se você estiver preocupado com roubo de senhas, você está convidado a usar criptografia SSL. Para detalhes, por favor consulte a próxima seção.

Acesso via protocolo WebDAV com criptografia SSL (https://)

Acessar o repositório Subversion via protocolo WebDAV com criptografia SSL (https://) é semelhante a acessar via http:// exceto pelo fato de que você precisa instalar e configurar um certificado digital no seu servidor web Apache2.

Você pode instalar um certificado digital fornecido por uma autoridade de certificação como a Verisign. Alternativamente, você pode instalar seus próprios certificados auto-assinados.

Esse passo assume que você tenha instalado e configurado um certificado digital no seu servidor web Apache 2. Agora, para acessar o repositório do Subversion, por favor consulte a seção acima! Os métodos de acesso são exatamente os mesmos, exceto pelo protocolo. Você precisa usar https:// para acessar o repositório do Subversion.

Acessar via protocolo específico (svn://)

Assim que o repositório do Subversion é criado, você pode configurar o protocolo de acesso. Você pode editar o arquivo /path/to/repos/project/conf/svnserve.conf para configurar o controle de acesso. Por exemplo, para configurar a autenticação você pode descomentar as seguintes linhas no arquivo de configuração:

# [general]
# password-db = passwd

Depois de descomentar as linhas acima você pode manter a lista de usuários no arquivo passwd. Então, edite o arquivo passwd no mesmo diretório e adicione o novo usuário. A sintaxe é a seguinte:

username = password

Para mais detalhes, por favor referir ao arquivo.

Agora, para acessar o Subversion via protocolo específico svn://, estando na mesma maquina ou não, você pode rodar o svnserver usando o comando svnserve. A sintaxe é a seguinte:

$ svnserve -d --foreground -r /caminho/para/o/repositorio
# -d -- modo daemon
# --foreground -- roda em primeiro plano (útil para detecção de erros)
# -r -- raiz do diretório a ser servido

Para maiores detalhes de utilização, por favor consulte:
$ svnserve --help

Assim que você rodar esse comando, o Subversion iniciará ouvindo na porta padrão (3690). Para acessar o repositório do projeto, você precisa rodar o seguinte comando a partir de um prompt de terminal:

svn co svn://hostname/project project --username nome_do_usuário

Baseado na configuração do servidor, ele perguntará por uma senha. Assim que você estiver autenticado, ele irá fazer a retirada do código do repositório do Subversion. Para sincronizar o repositório do projeto com a cópia local, você pode rodar o sub-comando update. A sintaxe do comando, informado em um prompt de terminal, é a seguinte:

cd diretorio_do_projeto ; svn update

Para maiores detalhes sobre a utilização de cada sub-comando do Subversion, você pode consultar o manual. Por exemplo, para aprender mais sobre o comando co (checkout), por favor rode o seguinte comando em um prompt de terminal:

                    
                      svn co help
                    
                  

Acessar via protocolo específico com criptografia SSL (svn+ssh://)

A configuração e o processo do servidor é o mesmo do método svn://. Para detalhes, por favor consulte a seção acima. Esse passo assume que você tenha seguido o passo acima e iniciado o servidor Subversion usando o comando svnserve.

Também assume-se que o servidor ssh esteja rodando na maquina e que ele permita conexões entrantes. Para confirmar, por favor tente fazer login na maquina usando ssh. Se você puder fazer login, tudo está perfeito. Se você não puder fazer login, por favor resolva isso antes de continuar.

O protoclo svn+ssh:// é usado para acessar o repositório do Subversion usando criptografia SSL. Os dados transferidos são criptografados usando esse método. Para acessar o repositório do projeto (por exemplo com um checkout), você precisa usar a seguinte sintaxe de comando:

svn co svn+ssh://hostname/var/svn/repos/project

[Nota]

Você precisa usar o caminho completo (/caminho/para/o/repositorio/do/projeto) para acessar o repositório do Subversion usando esse método de acesso.

Baseado na configuração do servidor ele perguntará por uma senha. Você precisa informar a senha que você usa para fazer login via ssh. Uma vez que esteja autenticado, ele retirará o código do repositório do Subversion.