Tutorial de Instalação do Subversion + SVN::Notify em Win32

Insumos necessários

Instalação

Instale o Subversion 1.5.5. Esse instalador da CollabNet automaticamente instala o apache. É importante verificar se já não tem um IIS rodando na porta 80. Nesse caso, mude ou o apache ou o IIS de porta.

Configurando Autenticação SSPI (Integração com Active Directory)

Caso deseje autenticação SSPI, baixe o módulo do apache no endereço http://sourceforge.net/projects/mod-auth-sspi

Descompacte o zip e copie o arquivo mod_auth_sspi.so para o C:\Program Files\CollabNet Subversion Server\httpd\modules.

Edite o arquivo C:\Program Files\CollabNet Subversion Server\httpd\conf\httpd.conf, adicionando a linha a seguir abaixo de toda a seção “LoadModule”:

LoadModule sspi_auth_module modules/mod_auth_sspi.so

No final do arquivo httpd.conf, adicione as seguintes linhas:

<Location /svn>
  SSPIAuth On
  SSPIAuthoritative On
  SSPIDomain <nome do domínio>
  SSPIOfferBasic On
  DAV svn
  SVNListParentPath on
  SVNParentPath C:\SVN_repository
  AuthType SSPI
  #AuthzSVNAccessFile svnaccessfile
  SSPIUsernameCase lower
  #SSPIOmitDomain
  Require valid-user
  </Location>

Criando repositórios

Os repositórios devem ser criados via linha de comando no servidor, ex.:

svnadmin create c:\svn_repository\meurepositorio

Instalando o SVN::Notify

Instale o ActivePerl. As opções default servem bem.

Após a instalação, utilize o Perl Package Manager (ppm) para instalar os seguintes módulos. O SMTP_auth só é necessário caso precise de SMTP autenticado:

ppm install Net::SMTP_auth
ppm install SVN::Notify

Configurando o SVN::Notify para ser disparado quando um commit ocorrer no repositório

Crie um arquivo com o nome c:\svn_repository\meurepositorio\hooks\post-commit.bat

Esse arquivo deve ter um conteúdo similar a este:

set REPOS=%1
set REV=%2
SET PATH=C:\Program Files\CollabNet Subversion Server;C:\PERL\bin;c:\perl\site\bin;
SET OS=Windows_NT
SET SystemRoot=C:\WINDOWS

svnnotify --repos-path %REPOS% -r %REV% --from from@meudominio.com.br --to destino@meudominio.com.br --smtp meusmtp.meudominio.com.br -H HTML::ColorDiff -d --smtp-user meuuser --smtp-pass meupassword --verbose --verbose

Alguns erros comuns, que só são exibidos quando o svnnotify é chamado com –verbose (2 vezes):

  • Cannot fork: Bad file descriptor – Provavelmente tem algo errado na variável PATH (não aponta pro lugar certo dos binários do svn, onde fica o svn.exe no servidor)
  • Unable to create Net::SMTP_auth object – Provavelmente o SystemRoot está errado. O erro não aparece muito claro no output do svnnotify.
Advertisement

3 thoughts on “Tutorial de Instalação do Subversion + SVN::Notify em Win32

  1. Crash de hardware na máquina de SVN aqui, os dados foram salvos mas precisei subir um novo serviço e pra variar vim atrás desse artigo novamente para configurar o SSPI da parada.

    Belo artigo, abração,
    Cleiton

    1. Legal,

      Valeu o toque. Vou dar uma olhada quando tiver um tempo.

      Depois de alguns anos trabalhando com desenvolvimento em diversos tipos de equipes, percebi que muitos desenvolvedores focam demais na IDE, sem se preocupar com os arquivos que a IDE manipula e sem se preocupar com o porque e com o conteúdo desses arquivos.

      Também percebi que muitos artefatos gerenciados durante o desenvolvimento, como arquivos de configuração, scripts de banco de dados, xml’s usados para gerar arquivos, geralmente não são tratados por dentro da IDE e gera problemas de atualização e integridade de builds.

      Sempre que trabalho com implementações de integração contínua, diversos problemas de integridade dos builds ocorrem por causa dessas práticas.

      Por essas e outras, eu não gosto muito da abordagem de usar plugin de IDE e sim de lidar com o file system direto, com a idéia de “changesets” pra dentro do controle de versão.

      Mas fico feliz por saber que existem outras alternativas e respeito quem gosta desse conceito.

      Abraço,

      Eric

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s