Capítulo 3. O Repositório
Não importa qual protocolo você use para acessar seus repositórios, você sempre precisará criar pelo menos um repositório. Isto pode ser feito igualmente com a linha de comando do Subversion ou com o TortoiseSVN.
Se você não criou ainda um repositório do Subversion, a hora é agora.
Você pode criar um repositório com o FSFS ou com o formato antigo Berkeley banco de dados (BDB). O formato FSFS é geralmente mais rápido e mais fácil de administrar, e funciona em compartilhamentos de rede e Windows 98 sem problemas. O formato BDB já foi considerado mais estável simplesmente porque ele tem sido usado por mais tempo, mas desde que FSFS tem sido agora em uso no campo por vários anos, que o argumento é agora bastante fraco. Leia Escolhendo uma Base de Dados no livro do Subversion para mais informações.
- Cria um diretório vazio com o nome SVN (ex:
D:\SVN\
), o qual é usado como diretório principal para todos os seus repositórios. - Cria outro diretório
MyNewRepository
dentro deD:\SVN\
- Abra a janela de comandos (ou janela DOS), vá para
D:\SVN\
e digite
svnadmin create --fs-type bdb MyNewRepository
ou
svnadmin create --fs-type fsfs MyNewRepository
D:\SVN\MyNewRepository
.Criando um Repositório com o TortoiseSVN
- Abra o windows explorer
- Crie um novo diretório e chame de, por exemplo
SVNRepository
- clique direito sobre o novo diretório criado e selecione → .
Um repositório é então criado dentro do novo diretório. Não edite esses arquivos você mesmo!!!. Se apresentar algum erro tenha certeza que o diretório está vazio e sem proteção de escrita.
Você será também questionado se você quer criar uma estrutura de diretórios dentro do repositório. Saiba sobre as opções de leiaute em “Leiaute do Repositório”.
TortoiseSVN irá configurar um ícone de pasta personalizado quando criar um repositório. Assim você poderá identificar os repositórios locais mais facilmente. Se você criar um repositório usando a linha de comando do cliente oficial o ícone para o diretório não será associado.
Dica
TortoiseSVN não oferece a opção de criar um repositório BDB, apesar de que você pode continuar usando a linha de comando para criar um. Repositórios FSFS são geralmente mais fáceis para manter, e também é mais fácil para nós mantermos o TortoiseSVN devido aos problemas de compatibilidade entre as diferentes versões do BDB.TortoiseSVN não suporta o acesso aos repositório BDB usando
file://
por conta de problemas de incompatibilidade, embora ele sempre
suportará este formato de repositório quando acessado através de um
servidor usando os protocolos svn://
, http://
ou https://
.Claro, nós também recomendamos que você não use
file://
por qualquer razão que não sejam apenas testes locais. Usando um
servidor é mais seguro e mais confiável e também para um único
desenvolvedor.
Para
acessar seu repositório local você precisa do caminho para a pasta.
Apenas lembre-se que Subversion esperar todos os caminhos dos
repositórios no formato
Para acessar o repositório localizado em uma rede compartilhada você pode também usar uma unidade mapeada, ou você pode usar um caminho UNC. Para caminhos UNC, o formato é
Antes do SVN 1.2, caminhos UNC tinham que ser informados num formato mais complicado
file:///C:/SVNRepository/
. Note o uso de barras em todo o caminho.Para acessar o repositório localizado em uma rede compartilhada você pode também usar uma unidade mapeada, ou você pode usar um caminho UNC. Para caminhos UNC, o formato é
file://NomeServidor/caminho/para/repos/
. No que há apenas 2 barras aqui.Antes do SVN 1.2, caminhos UNC tinham que ser informados num formato mais complicado
file:///\NomeServidor/caminho/para/repos
. Este formato ainda é suportado, mas não é recomendado.Atenção
Não crie ou acesse um repositório Berkeley DB em uma rede compartilhada. Ele não pode ser usado em uma sistema de arquivos remoto. Nem mesmo se você tem uma unidade mapeada da rede em uma unidade de disco. Se você tentar usar Berkeley BD em uma rede compartilhada, o resultado é imprevisível - você poderá ver erros misteriosos de imediato, ou poderá levar meses para descobrir que os dados do repositório estão sutilmente corrompidos.
Apesar
de que em teoria é possível guardar um repositório FSFS em uma rede
compartilhada e acessar concorrentemente o repositório usando o
protocolo
Primeiramente você está dando para todos os usuários dreito de escrita no repositório, então qualquer usuário pode acidentalmente apagar o repositório inteiro ou corrompe-lo de alguma maneira.
Em segundo lugar nem todo protocolo de compartilhamento de arquivo suporta as travas necessárias para o Subversion, então você pode encontrar seu repositório corrompido. Isto pode não acontecer logo, mas um dia dois usuários vão tentar acessar o repositório ao mesmo tempo.
Em terceiro lugar as permissões do arquivo precisam ser bem definidas. Você pode achar fácil num compartilhamento Windows, mas SAMBA é relativamente difícil.
O acesso através de
file://
, é definitivamente não é recomendado. De fato nós fortemente desencorajamos isto, e não suportamos tal uso.Primeiramente você está dando para todos os usuários dreito de escrita no repositório, então qualquer usuário pode acidentalmente apagar o repositório inteiro ou corrompe-lo de alguma maneira.
Em segundo lugar nem todo protocolo de compartilhamento de arquivo suporta as travas necessárias para o Subversion, então você pode encontrar seu repositório corrompido. Isto pode não acontecer logo, mas um dia dois usuários vão tentar acessar o repositório ao mesmo tempo.
Em terceiro lugar as permissões do arquivo precisam ser bem definidas. Você pode achar fácil num compartilhamento Windows, mas SAMBA é relativamente difícil.
O acesso através de
file://
é destinado para local, um único usuário, e particularmente para testes
e depurações. Quando você quer compartilhar o repositório você realmente deve configurar um servidor, e isto não é tão difícil como você deve estar pensando. Leia “Acessando o Repositório” para orientações sobre escolhas e configurações de um servidor.
Antes
de você importar seus dados para o repositório você deve primeiro
pensar sobre como você quer organizar os dados. Se você usar um dos
formatos recomendados depois você o terá muito mais organizado.
Existem alguns padrões e recomendadas maneiras de organizar um repositório. Muitas pessoas criam um diretório
Se o repositório contém vários projetos, as pessoas normalmente organizam sua estrutura por ramificação:
Se você adotar como nível mais alto algo como
Para projetos não relacionados você deve dar preferência para repositórios separados. Quando você submeter alterações, o novo número de revisão será do repositório inteiro, não o apenas a revisão do projeto. Tendo 2 projetos não relacionados compartilhando um mesmo repositório pode significar grandes lacunas no número da revisão. Os projetos Subversion e o TortoiseSVN aparecem no mesmo endereço principal, mas são repositórios completamente separados permitindo o desenvolvimento independente, e sem confusões no número da liberação.
Claro, você é livre para ignorar estes leiautes padrões. Você pode criar qualquer tipo de variação, seja o que funcionar melhor para você e sua equipe. Lembre-se que qualquer que seja a sua escolha, isto não é uma decisão permanente. Você pode reorganizar seu repositório a qualquer momento. Pelos diretórios branches e tags serem diretórios comuns, TortoiseSVN pode mover ou renomeá-los do jeito que você quiser.
Mudar de um leiaute para outro é apenas questão de mover uns diretórios no servidor; se você não gosta da maneira que as coisas estão organizadas no repositório, basta manipular os diretórios no repositório.
Então se você ainda não tem criada uma estrutura base de diretórios dentro do seu repositório você deverá fazer agora. Existem duas maneiras de fazer isso. Se você simplesmente quer criar uma estrutura
Note
que o nome do diretório que você está importando não aparece no
repositório, somente o seu conteúdo. Por exemplo, crie a seguinte
estrutura de diretórios:
Existem alguns padrões e recomendadas maneiras de organizar um repositório. Muitas pessoas criam um diretório
trunk
para guardar a “linha principal” de desenvolvimento, um diretório branches
para guardar as ramificações, e um diretório tags
para guardar as versões concluidas. Se o repositório guarda somente um
único projeto, então frequentemente as pessoas criam estes diretórios no
nível mais alto:/trunk /branches /tagsPorque este formato é tão comumente usado, quando você criar um novo repositório usando o TortoiseSVN, ele também oferecerá a criação da estrutura de diretórios para você.
Se o repositório contém vários projetos, as pessoas normalmente organizam sua estrutura por ramificação:
/trunk/paint /trunk/calc /branches/paint /branches/calc /tags/paint /tags/calc... ou por projeto:
/paint/trunk /paint/branches /paint/tags /calc/trunk /calc/branches /calc/tagsOrganizar por projeto faz sentido se os projetos não são fortemente relacionados e cada um deles é controlado individualmente. Para projetos relacionados onde você pode querer controlar todos os projeto de uma vez, ou onde os projetos são todos amarrados uns aos outros em um único pacote de distribuição, é então mais comum organizar por ramificação. Desta maneira você tem somente um trunk para controlar, e os relacionamentos entre os subprojetos são vislumbrados mais facilmente.
Se você adotar como nível mais alto algo como
/trunk /tags /branches
,
não há nada para dizer que você tenha que copiar o trunk inteiro para
cada ramificação e liberação, e de alguma forma esta estrutura oferece
mais flexibilidade.Para projetos não relacionados você deve dar preferência para repositórios separados. Quando você submeter alterações, o novo número de revisão será do repositório inteiro, não o apenas a revisão do projeto. Tendo 2 projetos não relacionados compartilhando um mesmo repositório pode significar grandes lacunas no número da revisão. Os projetos Subversion e o TortoiseSVN aparecem no mesmo endereço principal, mas são repositórios completamente separados permitindo o desenvolvimento independente, e sem confusões no número da liberação.
Claro, você é livre para ignorar estes leiautes padrões. Você pode criar qualquer tipo de variação, seja o que funcionar melhor para você e sua equipe. Lembre-se que qualquer que seja a sua escolha, isto não é uma decisão permanente. Você pode reorganizar seu repositório a qualquer momento. Pelos diretórios branches e tags serem diretórios comuns, TortoiseSVN pode mover ou renomeá-los do jeito que você quiser.
Mudar de um leiaute para outro é apenas questão de mover uns diretórios no servidor; se você não gosta da maneira que as coisas estão organizadas no repositório, basta manipular os diretórios no repositório.
Então se você ainda não tem criada uma estrutura base de diretórios dentro do seu repositório você deverá fazer agora. Existem duas maneiras de fazer isso. Se você simplesmente quer criar uma estrutura
/trunk /tags /branches
, você
pode usar o navegador de repositórios para criar as três pastas (em três
separadas submissões). Se você quer criar um hierarquia mais
estruturada então crie a estrutura primeiro no disco local e importe-a
em uma única submissão, como isto: - criar uma nova pasta vazia em seu disco rígido
- criar seu diretório da estrutura principal dentro da pasta - não coloque nenhum arquivo dentro ainda!
- importar esta estrutura em um repositório pelo clique direito em uma pasta que contem esta estrutura de diretório e selecionando → . Na janela de importação digite a URL para o repositório e clique em OK. Isto irá importar seu diretório temporário dentro da raiz do repositório para criar o leiaute básico do repositório.
C:\Temp\Novo\trunk C:\Temp\Novo\branches C:\Temp\Novo\tagsImportar
C:\Temp\Novo
dentro do diretório principal do repositório, o qual então vai parecer com isto: /trunk
/branches
/tags
Cópia de Segurança do Repositório
Não importante o tipo de repositório que você usa, é vitalmente importante que você mantenha cópias de segurança regulares, e que você verifique a cópia de segurança. Se o servidor falhar, você terá condições de acessar uma versão recente de seus arquivos, mas sem o repositório todo o histórico estará perdido para sempre.Uma simplória (mas não recomendada) maneira de fazer é copiar o diretório do repositório para a midia da cópia de segurança. Contudo, você precisa ter absoluta certeza que nenhum processo está acessando os dados. Neste contexto, acessando significa qualquer acesso de qualquer maneira. Um repositório BDB é escrito até mesmo quando a operação parece requerer apenas leitura, como verificar a situação. Se seu repositório estiver sendo acessado durante a cópia, (navegador web aberto, WebSVN, etc.) a cópia de segurança será inútil.
A maneira recomendada é executar
svnadmin hotcopy caminho/para/repositório caminho/para/cópiaseguranca --clean-logspara criar uma cópia de seu repositório em modo seguro. E então guarde esta cópia. A opção
--clean-logs
não é obrigatório, mas remove qualquer registro de arquivo duplicado
quando você copia um repositório BDB, o que pode economizar algum
espaço.A ferramenta svnadmin é instalada automaticamente quando você instala o cliente de linha de comando do Subversion. A maneira mais fácil de conseguir isso é o de verificar a opção de incluir as ferramentas de linha de comando para instalar o TortoiseSVN, mas se preferir, você pode baixar a versão mais recente de ferramentas de linha de comando diretamente do site do Subversion.
Vínculos externos
Se você quer disponibilizar seu repositório Subversion para outras pessoas você pode incluir um vínculo no seu website. Uma forma de tornar isso mais fácil é incluir um vínculo externo para outros usuários do TortoiseSVN.Quando você instala o TortoiseSVN, ele registra um novo protocolo
tsvn:
.
Quando um usuário do TortoiseSVN clica num vínculo como este, a janela
de obtenção será aberta automaticamente com a URL do repositório já
preenchida.Para incluir tal vínculo em sua própria página HTML, você precisa adicionar um código parecido com este:
<a href="tsvn:http://project.domain.org/svn/trunk"> </a>Of course it would look even better if you included a suitable picture. You can use the TortoiseSVN logo or you can provide your own image.
<a href="tsvn:http://project.domain.org/svn/trunk"> <img src=TortoiseCheckout.png></a>Você pode também fazer o vínculo apontar para uma revisão específica, por exemplo
<a href="tsvn:http://project.domain.org/svn/trunk?100"> </a>
Acessando o Repositório
Para usar o TortoiseSVN (ou qualquer outro cliente do Subversion), você precisa de um lugar para guardar seus repositórios. Você pode também guardar seus repositórios e acessá-los usando o protocolofile://
ou você pode colocá-los em um servidor e acessá-los usando os protocolos http://
ou svn://
. Os dois protocolos podem também ser criptografados. Você pode usar https://
ou svn+ssh://
, ou você pode usar svn://
com SASL.Se você está usando um servidor público como Google Code ou um servidor disponibilizado por outra pessoa então não há nada que você possa fazer. Veja Capítulo 4, Guia do Uso Diário.
Se você não tem um servidor e vai trabalhar sozinho, ou se você está apenas avaliando o Subversion e o TortoiseSVN isoladamente, então repositórios locais são provavelmente a melhor opção. Apenas crie um repositório em seu próprio computador como descrito anteriormente em Capítulo 3, O Repositório. Você pode pular o resto deste capítulo e ir diretamente para Capítulo 4, Guia do Uso Diário para saber como começar a usá-los.
Se você está pensando em configurar um repositório para vários usuários em uma pasta compartilhada, pense novamente. Leia “Acessando um Repositório em uma Rede Compartilhada” para descobrir porque isto é uma má idéia. Configurando um servidor não é tão difícil quanto parece, e isto vai ter mais segurança e provavelmente mais velocidade.
Informações mais detalhadas sobre as opções do servidor Subversion, e como escolher a melhor arquitetura para a sua situação, pode ser encontrada no livro do Subversion em Configuração do Servidor.
Nos primeiros dias de Subversion, a criação de um servidor necessário um bom entendimento da configuração do servidor e em versões anteriores deste manual, incluímos descrições detalhadas de como configurar um servidor. Desde então, as coisas tornaram-se mais fácil, pois agora existem vários instaladores de servidores pré-empacotados disponíveis que guiá-lo através do processo de instalação e configuração. Estes links são para alguns dos instaladores que conhecemos:
Oi Fábio, sou consultora de TI e tenho um cliente que utiliza o tortoise já faz algum tempo. Mas o escritório cresceu e o rapaz que sabia mais sobre a ferramenta saiu. Estamos precisando de uma consultoria para saberse devemos continuar usando esta ferramenta e para implantá-la direito.
ResponderExcluirVoce teria como nos ajudar?
Rosangela; Para saber como implantar essa ferramenta o SVN ou Subversion precisamos saber que se trata de um sistema de versionamento de arquivos, ou seja, ele permite que você guarde uma determinada quantidade de arquivos e até mesmo as modificações sobre este arquivo de forma a você poder recuperar o sistema que está em desenvolvimento, ele permite que múltiplos programadores colaborem entre si gerando sempre um ambiente fixo no servidor. Para saber se vocês estão utilizando o SVN e o Tortoise de forma correta só varrendo sua instalação eu poderia saber, mas antes de tudo serve explicar: O SVN ou Subversion é o servidor de versionamento de arquivos, o Tortoise é um ferramenta cliente que nos permite "logar" no servidor e capturar o arquivo que desejamos trabalhar, existem aí a possibilidade do sistema ser instalado em ambiente Linux ou Windows, de qualquer forma e para finalizar trabalhar com o SVN é muito importante para segurança de código e até mesmo de um sistema de arquivo que componham documentos ou códigos fontes do sistema, aconselho a continuarem usando, usado da maneira correta pode vir a ser muito útil e permite trabalharmos de uma forma mais profissional e responsável.
Excluir