terça-feira, 24 de dezembro de 2013

Tortoise SVN - Parte 3

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.

Criação do Repositório

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.

Criando um Repositório com a linha de comando do cliente


  1. 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.
  2. Cria outro diretório MyNewRepository dentro de D:\SVN\
  3. 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
    
Agora você tem uma novo repositório localizado em D:\SVN\MyNewRepository.

Criando um Repositório com o TortoiseSVN

  1. Abra o windows explorer
  2. Crie um novo diretório e chame de, por exemplo SVNRepository
  3. clique direito sobre o novo diretório criado e selecione TortoiseSVNCriar repositório aqui....
    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.

Acesso Local para o Repositório

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 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.

Acessando um Repositório em uma Rede Compartilhada

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 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.

Leiaute do Repositório

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 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
/tags
Porque 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/tags
Organizar 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:
  1. criar uma nova pasta vazia em seu disco rígido
  2. criar seu diretório da estrutura principal dentro da pasta - não coloque nenhum arquivo dentro ainda!
  3. importar esta estrutura em um repositório pelo clique direito em uma pasta que contem esta estrutura de diretório e selecionando TortoiseSVNImportar.... 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.
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:
C:\Temp\Novo\trunk
C:\Temp\Novo\branches
C:\Temp\Novo\tags
Importar 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-logs
para 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 protocolo file:// 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:


 

2 comentários:

  1. 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.
    Voce teria como nos ajudar?

    ResponderExcluir
    Respostas
    1. 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