Requisitos
O svntool utiliza alguns recursos externos para seu funcionamento. A lista segue abaixo:
No Windows 32bits:
- Python, instalado e no path do Sistema Operacional.
- Apache Ant, instalado e no path do Sistema Operacional.
- Robocopy (ou SyncToy), instalado e no path do Sistema Operacional.
- Subversion, instalado e no path do Sistema Operacional.
No Windows 64bits:
- Python, instalado e no path do Sistema Operacional.
- Apache Ant, instalado e no path do Sistema Operacional.
- SyncToy, instalado e no path do Sistema Operacional.
- Subversion, instalado e no path do Sistema Operacional.
No Linux 32 ou 64 bits:
- Python, instalado e no path do Sistema Operacional.
- Apache Ant, instalado e no path do Sistema Operacional.
- RSync, instalado e no path do Sistema Operacional.
- Subversion, instalado e no path do Sistema Operacional.
Ainda, algumas dependências extras existem, como o uso do SvnStat, StatSvn e SvnAnt. Porém, essas bibliotecas já estão incorporadas dentro do ditetório /lib da instalação.
NOTA: Assim como o svntool, todas as suas dependências não possuem custo de licenciamento.
Instalação
- Baixe a ultima versao compactada do svntool em TODO.
- Descompacte o svntool em um diretorio, como /usr/local/svntool ou c:\tools\svntool. Esse diretorio sera chamado simplesmente de svntool_home a partir de agora.
- Edite o arquivo svntool_home/build.properties, ajustando as entradas para o seu ambiente operacional. O arquivo é auto-explicativo.
- Para testar, acesse svntool_home e digite "ant -p". A saida deve ser algo como abaixo:
|
Buildfile: build.xml
Main targets:
admin.create CORE: Cria um repositorio em uma area especifica
admin.help CORE: Help do subcomando 'admin'.
help CORE: Help da ferramenta 'svntool'.
report.generate CORE: Gera relatorios estatisticos a partir de um repositorio
report.generate.checkout AUX.: Efetua checkout de um repositorio
report.help CORE: Help do subcomando 'report'.
svntool.dist CORE: Cria uma distribuicao do svntool no arquivo 'svntool.zip'.
sync.help CORE: Help do sumcomando 'sync'.
sync.run CORE: Inicializa e mantem sincronizados repositorios
sync.run.linux AUX.: Efetua a sincronizacao no Linux.
sync.run.windows AUX.: Efetua a sincronizacao no Windows.
sync.run.windows.robocopy AUX.: Efetua a sincronizacao via utilitario robocopy
sync.run.windows.synctoy AUX.: Efetua a sincronizacao via utilitario synctoy
Default target: help |
As tarefas marcadas como "CORE" podem ser invocadas pelo usuário. As tarefas marcadas como "AUX" são internas da ferramenta e não devem ser invocadas pelo usuário, pois podem incorrer em mau funcionamento e/ou perda de dados.
Para obter ajuda sobre uma determinada tarefa, execute "ant tarefa.help", como abaixo:
|
D:\TRABALHO\Eclipse\3layer-public\incubator\svntool>ant admin.help
Buildfile: build.xml
admin.help:
\[echo\] Parametros disponiveis: \-Darea=dir \-Drepo=repositorio
\[echo\] onde:
\[echo\] dir = Diretorio onde deve ser criado o repositorio.
\[echo\] repositorio = Nome do repositorio a ser criado.
\[echo\]
\[echo\] EXEMPLO 1: Cria o repositorio 'incubator' na area 'jboss' com autorizacao por area.
\[echo\]
\[echo\] ant admin.create \-Darea=jboss \-Drepo=incubator
\[echo\] |
BUILD SUCCESSFUL
Total time: 0 seconds
D:\TRABALHO\Eclipse\3layer-public\incubator\svntool> |
Objetivos e Funcionamento
O svntool possui três grandes objetivos, sendo os dois últimos focados na automatizacação através de ferramentas de agendamento do Sistema Operacional :
- Criação de repositórios: Repositórios Subversion são criados com base em um repositório padrão (template), que pode ser configurado conforme a necessidade do projeto. Por padrão, o repositório template é um repositório vazio com a estrutura /branches, /tags e /trunk, típica para repositórios Subversion. Ainda, como forma de facilitar a estruturação, os repositórios criados pelo svntool seguem uma organização dividida por áreas, ou seja, diretórios separados. A figura abaixo facilita a compreensão:

Confor mostra a figura, cada área possui um arquivo de autorização em separado, o que permite um equilíbrio na configuração de segurança para vários repositórios que possuem a mesma semântica (objetivos), como "projetos públicos", "projetos privados", "projetos do cliente X", etc.
- Geração de relatórios: Através dos utilitários SvnStat e StaSvn, diversos relatórios estatísticos em formato HTML são produzidos através de uma única chamada. Para um exemplo desses relatórios, acesse http://3layer.com.br/svnreport
.
- Espelhamento de repositórios: Repositórios podem ser espelhados (replicados) de um ponto para outro, tanto local quanto remotamente. Isso facilita muito o trabalho de ter múltiplas cópias de um repositório, e também funciona como forma de backup segura. Em ambientes Windows a replicação é feita com ou uso do ótimo utilitário Robocopy (somente para Win32) ou então com o SyncToy (Win32 ou Win64) e no Linux, isso é feito através do utilitário RSync. Nota-se que, devido a alta sensibilidade da estrutura dos repositórios Subversion, é necessário o uso de scripts Python (do próprio site do Subversion) para evitar problemas durante o espelhamento. Em outras palavras, o processo de espelhamento é feito em duas partes, como mostra a figura abaixo:

Todas essas funcionalidades operam em ambientes Windows e Linux de 32 ou 64 bits de forma transparente.
Criacao de repositorios
A criacao de repositorios geralmente é uma das primeiras tarefas a serem realizadas. No svntool, essa tarefa é facilitada, onde o administrador do sistema simplesmente invoca o comando "ant admin.create -Darea=public -Drepo=teste".
Como resultado, o repositório chamado "teste" será criado dentro do diretório "public" localizado dentro do caminho especificado pela variável "$svn.root", localizada no arquivo svntool_home/build.properties. Em outras palavras, o caminho do repositório será "/$svn.root/public/teste".
Ao executar um comando como "svnlook info D:\DATA\SVN\public\teste", você verá uma saída como:
|
admin
2008-12-20 05:37:55 -0200 (sáb, 20 dez 2008)
32
Estrutura inicial do repositorio |
Ou seja, a estrutura criada para o repositório "teste" é baseada no repositório template do svntool, localizado dentro da pasta /resources.
Se você acha que precisa uma estrutura diferente para o repositório template, conecte neste repositório template e altere-o conforme sua necessidade.
Caso o repositório a ser criado já exista, nenhuma alteração é feita sobre ele.
Caso deseje não utilizar áreas para os repositórios, utilize o parâmetro de área como vazio, como -Darea="".