Existem diferentes maneiras de armazenar os pacotes nos repositórios (ou em múltiplos repositórios à sua escolha). O svn-buildpackage espera normalmente uma estrutura de directórios semelhante àquela bem descrita no Livro do Subversion, que se parece como:
Exemplo 1.1. Exemplo de hierarquia de directórios.
packageA/ trunk/ branches/ branches/upstream tags/ projectB/ trunk/ branches/ branches/developerFoo tags/
O packageA
em cima pode ser um pacote fonte típico
baseado no original e o projectB
pode ser um pacote
nativo Debian com um branch separado criado pelo programador Foo para as
suas próprias experiências. Veja Subversion
Book/Branches para mais detalhes acerca de usar os branches de
Subversion.
Note também que as Etiquetas (Tags) funcionam de modo bem diferentes
daquelas no CVS. O Subversion não mantêm etiquetas mágicas associadas a
alguns ficheiros. Em vez disso, acompanha o estado do ficheiro e move,
portanto Etiquetar algo significa criar uma cópia (dentro do Repositório,
com espaço em disco eficiente) de uma certa versão do conjunto de
ficheiros. Então o branch Debian da fonte do pacote lançado é contido no
trunk/
e é etiquetado ao se copiar (fazer mirror) a
árvore do trunk para tags/DEBIAN-REVISION
. O mesmo
acontece para os lançamentos da origem. Adicionalmente, a versão original
mais recente é copiada em mirror para
branches/upstream/current
. Após alguns ciclos de
actualização do pacote, a árvore de directórios pode parecer-se como isto:
Exemplo 1.2. Exemplo de hierarquia de directório branch
# svn ls -R file:///home/user/svn-repo/dev/translucency branches/ branches/upstream/ branches/upstream/0.5.9/ branches/upstream/0.5.9/AUTHORS branches/upstream/0.5.9/COPYING ... branches/upstream/0.6.0/ branches/upstream/0.6.0/AUTHORS branches/upstream/0.6.0/COPYING ... branches/upstream/current/ branches/upstream/current/AUTHORS branches/upstream/current/COPYING ... same stuff as in 0.6.0 ... tags/ tags/0.5.9-1/ ... tags/0.5.9-1/debian/ tags/0.5.9-1/debian/README.Debian ... tags/0.6.0-1/ tags/0.6.0-1/AUTHORS ... tags/0.6.0-1/debian/ tags/0.6.0-1/debian/README.Debian tags/0.6.0-1/debian/changelog ... trunk/ trunk/AUTHORS trunk/COPYING ... trunk where 0.6.0-2 is beeing prepared ...
O svn-buildpackage também suporta a disposição de segundo repositório sugerida no Livro do Subversion (função/pacote) mas o svn-inject prefere o documentado em cima. Ambos svn-buildpackage e svn-upgrade deverão ser capazes de auto-detectar a disposição do repositório e a localização dos ficheiros de pacotes.
Em teoria, você não tem que seguir esses exemplos e colocar os directórios
trunk
, branches
e
tags
nas localizações que mais gosta. Mas o
svn-buildpackage e outros scripts não vão localizar os
ficheiros automaticamente portanto você precisa editar o ficheiro
.svn/deb-layout
no seu directório de trabalho e definir
caminhos. Veja o antigo abstract acerca
de como a auto-detecção funciona e o
exemplo de configuração.
Finalmente, a estrutura de directórios de trabalho no seu sistema de desenvolvimento poderá parecer como isto:
Exemplo 1.3. Exemplo de configuração
dev/ # directório base, pode estar sob controle de versão ou não dev/foo # directórios trunk de vários pacotes dev/bar # conteúdo correspondente ao trunk, veja em cima dev/tarballs # onde os tarballs de 'origem' são armazenados, pode ser sob VC ou não dev/build-area # onde os pacotes são exportados temporariamente e construídos