Manuals

Capítulo 3. O Repositório

Índice

Criação do Repositório
Criando um Repositório com a linha de comando do cliente
Criando um Repositório com o TortoiseSVN
Acesso Local para o Repositório
Acessando um Repositório em uma Rede Compartilhada
Leiaute do Repositório
Cópia de Segurança do Repositório
Rotinas de eventos no servidor
Vínculos externos
Acessando 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

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. Open the command prompt (or DOS-Box), change into D:\SVN\ and type

    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

Figura 3.1. O menu do TortoiseSVN para diretórios não controlados

O menu do TortoiseSVN para diretórios não controlados

  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

Também recomendamos que você não use file:// por qualquer razão que não sejam apenas testes locais. Usar um servidor é mais seguro e mais confiável para todos, a não ser para o uso de 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.

Acessando um Repositório em uma Rede Compartilhada

Although in theory it is possible to put a FSFS repository on a network share and have multiple users access it using file:// protocol, this is most definitely not recommended. In fact we would strongly discourage it, and do not support such use for various reasons:

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

  • Se uma pessoa instala uma versão mais recente do cliente que atualiza o formato do repositório, todos os demais serão impossibilitados de acessar o repositório até que também tenham atualizado para a nova versão do cliente.

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 that the name of the folder you are importing does not appear in the repository, only its contents. For example, create the following folder structure:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
      

Import C:\Temp\New into the repository root, which will then look like this:

/trunk
/branches
/tags
      

TortoiseSVN homepage