Subversion

O Subversion é um sistema de controlo de versões 'open source'. Utilizando o Subversion pode gravar a história de ficheiros de código fonte e documentos. Eles gere ficheiros e directórios ao longo do tempo. Uma 'árvore' de ficheiros é colocada num repositório central. Este repositório é muito semelhante a um vulgar servidor de ficheiros, excepto que se lembra de todas as alterações efectuadas nos ficheiros e directórios.

Instalação

Para aceder ao repositório do Subversion utilizando o protocolo HTTP deve instalar e configurar um servidor web com certificado digital. Está provado que o Apache2 funciona com o Subversion. Por favor consulte a sub-secção HTTP da secção Apache2 para o instalar e configurar. Consulte a sub-secção HTTPS da secção Apache2 para o instalar e configurar um certificado digital.

Para instalar o Subversion, execute o seguinte comando num terminal:

sudo apt-get install subversion libapache2-svn

Configuração de Servidor

Este passo assume que instalou os pacotes acima referidos no seu sistema. Esta secção explica como criar um repositório Subversion e aceder ao projecto.

Criar um Repsitório Subversion

O repositório Subversion pode ser criado usando o comando seguinte num terminal:

svnadmin create /path/to/repos/project

A Importar os Ficheiros

Uma vez criado o repositório poderá importar os ficheiros para o repositório. Para importar um directório, insira o seguinte num terminal:

svn import /path/to/import/directory file:///path/to/repos/project

Métodos de Acesso

Os repositórios Subversion podem ser acedidos (verificados) através de vários métodos -- num disco local, ou utilizando vários protocolos de rede. No entanto a localização de um repositório é sempre um URL. A tabela refere como diferentes esquemas URL indicam deferentes métodos de acesso.

Tabela 13.1. Métodos de Acesso

Esquema

Método de Acesso

file://

acesso directo ao repositório (no disco local)

http://

Acesso via protocolo WebDAV a um servidor web Apache2 com Subversion

https://

O mesmo que http://, mas com codificação SSL

svn://

Acesso via protocolo personalizado a um servidor svnserve

svn+ssh://

O mesmo que svn://, mas através de túnel SSH


Nesta secção, veremos como configurar o Subversion para todos estes métodos de acesso. Aqui, cobrimos o básico. Para mais detalhes em utilizações avançadas, consulte o livro svn.

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

Este é o mais simples de todos os métodos de acesso. Não requere nenhum processo do Subversion a funcionar no servidor. Este método é utilizado para aceder ao Subversion na mesma máquina. A sintaxe do comando, executado num terminal, é a seguinte:

svn co file:///caminho/para/repositorio/projecto

ou

svn co file://nome_da_maquina/para/repositorio/projecto

[Nota]

Se não especificar o nome da máquina existem três barras (///) - duas para o protocolo (neste caso file) mais uma para o caminho. Se indicar o nome da máquina deve utilizar duas barras (//).

As permissões do repositório dependem das permissões do sistema de ficheiros. Se o utilizador tem permissão leitura/escrita, é possível efectuar as operações sáida e envio (“checkout” e “commit”) no repositório.

Acesso via protocolo WebDav (http://)

Para aceder ao repositório Subversion via protocolo WebDAV, deve configurar o seu servidor web Apache2. Terá de adicionar o seguinte no ficheiro /etc/apache2/apache2.conf:

 <Location /svn>
  DAV svn
  SVNPath /caminho/para/repositorio
  AuthType Basic
  AuthName "O nome do seu repositório"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 

Para importar ou fazer commit de ficheiros para o repositórios do Subversion por HTTP, o repositório deverá ser da responsabilidade de um utilizador HTTP. os sistema Ubuntu, normalmente o utilizador HTTP é www-data. Para mudar a propriedade de uso do repositório insira o seguinte comando no terminal:

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

Mudando a propriedade do repositório com www-data não será capaz importar ou fazer commit de ficheiros no repositório correndo o comando svn import file:/// como qualquer outro utilizador em vez de www-data.

A seguir, deve criar o ficheiro /etc/subversion/passwd. Este ficheiro contém as informações de autenticação dos utilizadores. Para adicionar uma entrada, isto é, adicionar um utilizador, deve executar o seguinte comando num terminal:

sudo htpasswd -c /etc/subversion/passwd user_name

Este comando pedir-lhe-á para indicar uma palavra passe. Quando o fizer o utilizador será adicionado. Agora, para aceder ao repositório pode executar o seguinte comando:

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

A palavra passe é transmitida como texto simples. Se estiver preocupado com a pesquisa indevida de palavras passe, aconselhamos a utilizalção de codificação SSL. Para detalhes consulte a secção seguinte:

Acesso via protocolo webDAV com codificação SSL (https://)

Aceder ao repositório Subversion através do protocolo WebDAT com codificação SSL (https://) é semelhante ao http://, excepto que deve instalar e configurar um certificado difital no seu servidor web Apache2.

Pode instalar um certificado digital emitido por uma companhia creditada como a Verisign. Alternativamente, pode instalar o seu próprio certificado auto assinado.

Este passo assume que instalou e configurou um certificado digital no seu servidor web Apache2. Agora, para aceder ao repositório Subversion, consulte a secção acima! Os métodos de acesso são exactamente os mesmos, excepto o protocolo. Agora deve utilizar o https:// para aceder ao repositório Subversion.

Acesso via protocolo personalizado (svn://)

Uma vez criado o repositório Subversion, pode configurar o controlo de acessos. Edite o ficheiro /path/to/repos/project/conf/svnserve.conf para configurar o controlo de acessos. Por exemplo, para configurar a autenticação, pode retirar os comentários nas linhas seguintes do ficheiro de configuração:

# [general]
# password-db = passwd

Depois de retirar os comentários nas linhas acima, pode gerir a lista de utilizadores no ficheiro passwd. Assim, edite o ficheiro passwd no mesmo directório e adicione um novo utilizador. A sintaxe é a seguinte:

username = password

Para mais detalhes, consulte o ficheiro por favor.

Agora, para aceder ao Subversion via protocolo svn://, quer da mesma máquina ou de uma máquina diferente, pode executar o svnserver usando o comando svnserve. A sintaxe é a seguinte:

$ svnserve -d --foreground -r /caminho/para/repositorio
# -d -- modo serviço
# --foreground -- correr visível (útil para correcção de erros)
# -r -- raiz do directório a disponibilizar

Para mais detalhes sobre a utilização, por favor consulte:
$ svnserve --help

Uma vez executado este comando, o Subversion começa a escutar no porto pré-definido (3690). Para aceder ao repositório do projecto, deve executar o comando seguinte num terminal:

svn co svn://nome_da_maquina/projecto projecto --username nome_do_utilizador

Dependendo da configuração, ele pede a palavra passe. Uma vez autenticado, ele verifica o código no repositório Subversion. Para sincronizar o repositório do projecto com a cópia local, pode executar num terminal o sub-comando update. A sintaxe é a seguinte:

cd project_dir ; svn update

Para mais detalhes acerca de cada subcomando do Subversion, pode consultar o manual. Por exemplo, para aprender mais sobre o comando co (do inglês checkout, verificar), por favor execute o comando seguinte num terminal:

            
              svn co help
            
          

Acesso via protocolo personalizado com codificação SSL (svn+ssh://)

A configuração e o processamento do servidor são os mesmos que o do método svn:// . Para mais detalhes consulte a secção acima. Este passo assume que seguiu os passos acima e iniciou o servidor Subversion utilizando o comando svnserve.

Também é assumido que o servidor ssh está funcionar nessa máquina e que aceita ligações de entrada. Para confirmar, por favor tente entrar na máquina utilizando o ssh. Se conseguir entrar, está tudo bem. Se não conseguir, por favor verifique o servidor antes de continuar.

O protocolo svn+ssh:// é utilizado para aceder ao repositório Subversion utilizando codificação SSL. Os dados transferidos são codificados utilizando este método. Para aceder ao repositório do projecto (para efectuar, por exemplo, uma verificação), deve utilizar a seguinte sintaxe no comando:

svn co svn+ssh://nome_da_maquina/var/svn/repos/projecto

[Nota]

Tem que indicar o caminho completo (/path/to/repos/project) para aceder ao repositório do Subversion utilizando este método.

Dependendo da configuração, ele pede uma palavra passe. Tem que digitar a palavra passe que utiliza para iniciar a sessão via ssh. Uma vez autenticado, ele verifica o código no repositório Subversion.