sábado, 29 de agosto de 2009

Windows 7 + VisualSVN Server + OpenSSL + TortoiseSVN + Trac (Parte 1)

Esse artigo irá mostrar detalhadamente cada passo para a instalação e configuração do VisualSVN Server utilizando certificado digital e trabalhando integrado com a ferramenta Trac, no Windows 7.

Essa primeira parte do artigo irá detalhar o processo de instalação e configuração do VisualSVN Server.

1. Instalando o VisualSVN Server

O VisualSVN Server é um pacote que contém tudo o que é necessário para instalar, configurar e gerenciar um servidor subversion para a plataforma Windows. Isto inclui o Subversion, Apache e um console de gerenciamento.

O VisualSVN Server possibilita o uso de qualquer client Subversion para conexão ou um rápido acesso aos repositórios através de uma interface web (browser).

Além disso, é 100% free.

Faça o download no site http://www.visualsvn.com/server/download/.

    1.1. Iniciando a instalação




    1.2. Configurações

Essa etapa trás cinco itens de configuração do servidor SVN.

a) Location: Local onde são instalados os arquivos do VisualSVN Server. O default é a pasta “VisualSVN Server”, no diretório “Arquivos de Programas” (ou “Program Files”, se o idioma de seu Windows for o inglês).
b) Repositories: É o diretório padrão usado para repositório, ou seja, o caminho onde os arquivos dos projetos estão ou estarão localizados (repositório do Subversion).
Se o número da equipe de desenvolvedores for considerável e/ou o número de projetos for expressivo, a quantidade de acesso pode tornar-se um gargalo assim como o espaço necessário. Dessa forma, recomendo avaliar com cuidado o grau de acessos e atualizações que serão efetuados de forma a definir um local com espaço e suficientemente rápido para atender à demanda.
c) Server Port: A instalação sugere utilizar ou porta 443 ou a porta 8443. No entanto, é possível modificá-la para outro valor. Nesse caso cuide para não especificar um valor conflitante com a porta utilizado por algum outro aplicativo (consulte Lista padrão de serviços e portas associadas).
d) HTTPS: Determina se o servidor svn irá ou não utilizar conexões seguras (https). É recomendado que deixe essa opção marcada.
e) Authentication: Esse parâmetro é particularmente interessante e deve ser configurado de acordo com a necessidade de cada empresa.

A autenticação dos usuários nas conexões ao servidor pode ser feita de duas formas: 1 – Utilizando usuários e grupos configurados no próprio servidor; 2 – Utilizando os usuários do Windows (login e senha da rede local ou do ActiveDirectory).

Se for utilizar a autenticação do subversion (opção 1), todos os logins e senhas deverão ser criados.


Nesse tutorial instalaremos o VisualSVN com as configurações padrões. Principalmente porque o objetivo é a utilização de certificados digitais para garantir a segurança dos acessos e, para isso, no mínimo a opção https deve estar marcada.

Caso seja necessário, todos esses itens de configuração podem ser modificados no console de gerenciamento.

    1.3. Instalação Concluída

Concluído a instalação o console de gerenciamento será executado exibindo uma interface semelhante a da imagem abaixo.


2. Criando Repositórios

A criação de repositório é muito simples. Você utilizará o console de gerenciamento para isso.

Clique com o botão direito sobre o tópico Repositories. Várias opções serão apresentadas em um popup menu, entre elas New.


Ao clicar em Repository... um dialog será apresentado solicitando que informe o nome do repositório que deseja criar.

Não é obrigatório, mas se você deseja trabalhar com o sistema de private branches, recomendo marcar a opção Create default structure. Essa opção irá criar automaticamente as pastas trunk, branches e tags na estrutura do repositório.


3. Importando Repositórios

Se você já possui um repositório e deseja importá-lo ao gerenciamento do VisualSVN, você pode proceder de forma manual ou através do console de gerenciamento.

Na forma manual basta você copiar o repositório desejado para a pasta D:\Repositórios\SVN (ou para o diretório que você especificou como sendo o repositório padrão do Subversion).

Se desejar fazer através do console de gerenciamento, acesse a opção Import Existing Repository, como detalha a imagem abaixo.


Ao selecionar essa opção, um dialog será exibido solicitando que informe o diretório de localização do Repository na qual deseja importar e um nome para o mesmo.


Um ponto a ser observado é que a importação de repositórios deveser feito projeto a projeto.

O exemplo acima mostra a importação do projeto WorkPlus que está no repositório antigo (I:\Repositories\). E, no caso de uma migração entre repositório, esse procedimento deve ser repetido para os demais projetos.

Tanto a cópia manual das pastas quanto a importação de repositórios não considerada a lista de usuários e as regras/restrições de acessos. Essa informação não está armazenada dentro dos projetos e sim no próprio repositório (D:\Repositories\SVN). Maiores detalhes serão apresentados no tópico abaixo.

4. Usuários e Controle de Acesso

Logo após a instalação do VisualSVN Server o sistema não possui qualquer conta de usuário definida. E é necessário possuir pelo menos um usuário para acesso aos projetos via web browser.
A imagem ao lado pertence à página principal do console de gerenciamento do VisualSVN Server e podemos observar claramente que não há usuários e nem grupos definidos.

A criação dos usuários pode ser feita utilizando os links (“Create new user...” e “Create new group...”) dessa mesma página principal ou clicando com o botão direito sobre a pasta “Users” no lado esquerdo da console de gerenciamento.

Tome cuidado na definição das senhas. Elas são sensitivas a maiúsculo-minúscula. O nome dos usuários também é case sensitive.

4.1. Restringindo o Acesso

No acesso via web browser ou através de um client subversion ao repositório, ou a um projeto específico, será solicitado login. O acesso será liberado somente os usuários que foram cadastrados. No entanto o VisualSVN Server, ao ser instalado, vem com uma configuração padrão que dá acesso completo ao repositório a qualquer usuário (quando é dito “qualquer usuário” está se referindo aos usuários previamente cadastrados).
Essa configuração padrão é “herdada” sempre que um repositório for criado ou importado. E para evitar acessos indesejados devido a descuidos, particularmente, eu recomendo remover o acesso “Everyone”.

Para isso acesse o menu de contexto em “Repositories”, no console de gerenciamento, e click na opção “Properties”, como exemplifica a imagem à esquerda.

Observe que a permissão do usuário especial “Everyone” está definida como leitura e escrita (default da instalação).

O controle de acesso do repositório subversion é bastante flexível e possibilita restringir o acesso não somente a todo o repositório, mas também para diretórios e mesmo arquivos específicos. No entanto, tome cuidado para não especificar regras que venham conflitar com outras, resultando em um comportamento indesejado.

Um exemplo de regra conflitante é definir as permissões do usuário “Everyone” como “No Access” e acrescentar outros usuários/grupos. O resultado é falha sempre que os usuários tentarem fazer um svn commit, mesmo tais usuários tendo permissão “Read / Write”.

4.2. Migrando repositórios

Como comentado no capítulo anterior (3. Importando Repositórios), as informações sobre usuários, grupos e restrições de acesso são armazenados no repositório raiz (C:\Repositories, ou outro caminho que você tenha especificado na instalação) através dos arquivos htpasswd e authz.

No arquivo htpasswd são armazenados os usuários e suas respectivas senhas (criptografadas). O arquivo authz contém as restrições de acesso aos repositórios.

Durante a importação dos projetos, nem a lista de usuários/grupos nem as regras de acesso serão importadas, sendo assumido por default o controle de acesso do repositório raiz. Nesse caso é possível copiar as linhas relativas ao projeto que está sendo importando do arquivo authz do repositório antigo para o novo. Isso é possível porque o arquivo é armazenado em formato texto e sua sintaxe é simples.