Manuals

Capítulo 3. O repositório

Índice

Criação do Repositório
Criar um Repositório com o Cliente de Linha de Comandos
Criar O Repositório Com o TortoiseSVN
Acesso Local ao Repositório
Aceder ao Repositório numa Partilha de Rede
Estrutura do Repositório
Cópia de Segurança do Repositório
Scripts de gancho de servidor
Ligações de Checkout
Aceder ao Repositório

Independentemente do protocolo que usas para aceder aos teus repositórios, precisas sempre de criar pelo menos um. Isto pode ser feito com a linha de comandos do Subversion ou com o TortoiseSVN.

Se ainda não criaste um repositório SVN, está é a altura para o fazer.

Criação do Repositório

Criar um Repositório com o Cliente de Linha de Comandos

  1. Cria uma pasta vazia com o nome SVN (e.g. D:\SVN\), que será usada como raiz para todos os teus repositórios.

  2. Cria outra pasta MyNewRepository dentro da D:\SVN\.

  3. Open the command prompt (or DOS-Box), change into D:\SVN\ and type

    svnadmin create --fs-type fsfs MyNewRepository
              

Agora tens um novo repositório localizado em D:\SVN\MyNewRepository.

Criar O Repositório Com o TortoiseSVN

Figura 3.1. O menu TortoiseSVN para pastas não versionadas

O menu TortoiseSVN para pastas não versionadas

  1. Abre o explorador do Windows

  2. Cria uma nova pasta e chama-a, e.g. SVNRepository

  3. Clica com o botão direito na pasta recém-criada e selecciona TortoiseSVNCriar repositório aqui....

    É então criado o repositório dentro da nova pasta. Não edites esses ficheiros manualmente!!!. Se obtiveres algum erro, tem a certeza que essa pasta é vazia e não está protegida contra escrita.

    Serás também questionado se irás querer criar uma estrutura de pastas no repositório. Pesquisa mais sobre opções de formato em “Estrutura do Repositório”.

    O TortoiseSVN irá criar um ícone de pasta personalizado quando cria um repositório, para que possas identificar mais facilmente os repositórios locais. Se criares um repositório usando o cliente de linha de comandos oficial, este ícone de pasta não será atribuído.

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 ao Repositório

Para aceder ao teu repositório local, precisas do caminho para essa pasta. Lembra-te que o Subversion está à espera que todos os caminhos estejam na forma file:///C:/SVNRepository/. Observa o uso de barras por todo o lado.

Para aceder a um repositório localizado numa partilha de rede, podes usar o mapeamento de unidades, ou podes usar um caminho UNC. Para caminhos UNC a forma é file://ServerName/path/to/repos/. Observa que só existem aqui 2 barras dianteiras.

Antes do SVN 1.2, os caminhos UNC tinham de ser especificados numa forma mais obscura, file:///\ServerName/path/to/repos. Esta forma é ainda suportada, mas não recomendada.

Aceder ao Repositório numa Partilha de Rede

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:

  • Em primeiro lugar, tu estás a dar a cada utilizador o acesso directo ao repositório, pelo que qualquer utilizador pode acidentalmente apagar todo o repositório ou inutilizá-lo de alguma forma.

  • Em segundo lugar, nem todos os protocolos de partilha de ficheiros em rede suportam o bloqueio que o Subversion requer, pelo que podes encontrar o teu repositório corrompido. Poderá não acontecer de imediato, mas um dia dois utilizadores tentarão aceder ao repositório ao mesmo tempo.

  • Em terceiro lugar, as permissões dos ficheiros tem de ser configuradas como estão. Poderás, no entanto, quase dar a volta a isso numa partilha Windows nativa, mas será particularmente difícil no SAMBA.

  • 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 file:// é dirigido para acesso local e de utilizador único, em particular para testes e depuração de problemas. Quando tu queres partilhar o repositório, precisarás realmente de instalar correctamente um servidor, e não é tão difícil como pensas. Consulta o “Aceder ao Repositório” para guias orientadoras na escolha e instalação de um servidor.

Estrutura do Repositório

Antes de tu importares os teus dados para o repositório, deverás primeiro pensar em como o queres organizar. Se tu usares uma das estruturas recomendadas, mais tarde terás a tudo muito mais facilitado.

Existem alguns métodos padrão e recomendados de organizar o repositório. A maioria das pessoas a pasta trunk para guardar a linha principal de desenvolvimento, uma pasta ramos para conter as cópias de ramos, e a pasta etiquetas para guardas as cópias etiquetas. Se o repositório tiver só um projecto, então frequentemente as pessoas criaram essas pastas de nível de topo:

/trunk
/branches
/tags
    

Porque sendo tão normalmente usado este formato, ao criares um novo repositório através do TortoiseSVN este irá também se oferecer para criar por ti a estrutura de pastas.

Se o repositório conter vários projectos, as pessoas normalmente indexarão a sua estrutura por ramo:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

...ou por projecto:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Indexar por projecto faz sentido, se os projectos não estão intimamente relacionados, e cada um é obtido individualmente por checkout. Para projectos relacionados onde poderás querer efectuar o checkout de todos os projectos de uma só vez, ou onde os projectos estão todos ligados num único pacote de distribuição. É normalmente melhor indexar por ramo. Deste modo tu podes ter um trunk para efectuar checkout e as relações entre subprojectos são mais facilmente visível.

Se adoptares por uma abordagem de um nível de topo /trunk /tags /branches, não é necessário referir que terás de copiar o trunk inteiro para cada ramo e etiqueta, e de algum modo esta estrutura oferece a maior flexibilidade.

Para projectos não relacionados, poderás preferir o uso de repositórios separados. Quando submetes as alterações, é o número de revisão do repositório inteiro que muda, e não o número de revisão do projecto. Ter 2 projectos não relacionados a partilhar o repositório, pode significar grandes falhas nos números de revisões. Os projectos Subversion e TortoiseSVN aparecem no mesmo endereço de hospedeiro, mas estão completamente separados, permitindo desenvolvimentos separados, e sem confusão sobre números de construção.

Está claro que és livre para ignorar essas estruturas comuns. Tu podes criar qualquer género de variação, e o que funcionar melhor para ti e para a tua equipa. Lembra-te que o que escolheres não será um comprometimento permanente. Tu podes reorganizar, em qualquer altura, o teu repositório. Porque ramos e etiquetas são pastas comuns, o TortoiseSVN pode mover ou alterar o seu nome, quando assim o desejares.

Trocar de uma estrutura para outra é só uma questão de executar uma série de movimentos do lado do servidor. Se não gostares do modo como as coisas estão organizadas no repositório, poderás manipular as pastas a teu modo.

Então, se ainda não criaste a estrutura de pastas básica dentro do teu repositório, deverás faze-lo agora. Existem duas maneiras para o obteres. Se queres simplesmente criar a estrutura /trunk /tags /branches, tu podes usar para isso o navegador de repositório, para criar as três pastas (em três submissões separadas). Se queres criar uma hierarquia mais profunda, então é mais simples criar primeiro a estrutura de pastas em disco e importá-la numa simples submissão, assim:

  1. cria uma nova pasta vazia no teu disco rígido

  2. cria a estrutura de pastas de nível de topo que desejas, dentro dessa pasta - não ponhas lá ainda nenhum ficheiro!

  3. Importa esta estrutura para o repositório com um clique com o botão direito na pasta que contém esta estrutura de pastas, e seleccionando TortoiseSVNImportar... Na caixa de diálogo importar, introduz o URL do teu repositório e clica OK. Então a tua pasta temp será importada para a raiz do repositório, para criar a estrutura básica do mesmo.

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