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

Os repositórios do Subversion podem ser acessados (retirados) através de diversos métodos -- no disco local, através de vários protocolos de rede. Uma localização de repositório, entretanto, é sempre uma URL. A tabela descreve como diferentes esquemas de URL apontam para os métodos de acesso disponíveis.

Tabela 13.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
  SVNPath /caminho/para/o/repositorio
  AuthType Basic
  AuthName "Nome do seu repositorio"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location 

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.

Em seguida, você precisa criar o arquivo /etc/subversion/passwd. Esse arquivo contém detalhes de autenticação de usuários. Para adicionar uma entrada, ex.: para adicionar um usuário, você pode rodar o seguinte comando a partir do prompt de um terminal:

sudo htpasswd -c /etc/subversion/passwd nome_do_usuario

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.