Fusão em Tempo de Construção (On-Build-Time)

Uma funcionalidade especial do svn-buildpackage é o chamado modo mergeWithUpstream. Muitos projectos não querem manter o código de origem completo sob controle de revisão, por exemplo, devido à grande quantidade de espaço de disco necessária e tempo de processamento. Por vezes faz sentido manter apenas o directório debian/ e talvez mais alguns ficheiros sob controle de revisão.

A tarefa de exportar a fonte do repositório e adicioná-la à fonte da origem antes da construção torna-se aborrecida após algum tempo. Mas as ferramentas do svn-buildpackage automatizam a maioria deste trabalho para si ao mudar para modo mergeWithUpstream se for detectada uma bandeira especial: a propriedade mergeWithUpstream (Subversion) do directório debian. O svn-buildpackage irá fundir o trunk com a fonte da origem durante a construção e o svn-upgrade irá apenas actualizar os ficheiros alterados neste caso.

Para activar esta funcionalidade durante a importação inicial do pacote fonte, simplesmente adicione o switch -o à chamada do svn-inject e ele irá preparar a fonte para modo mergeWithUpstream. Isto reduz o conjunto de ficheiros para aqueles modificados para Debian e definir a propriedade mergeWithUpstream.

Mas, e se você decidir mudar para modo mergeWithUpstream após o pacote ter sido injectado? Para fazer isto, verifique o repositório completo, remova os ficheiros não alterados no pacote Debian de ambos fonte de origem e branch Debian (svn rm) e defina a propriedade mergeWithUpstream em debian no directório trunk com:

svn propset mergeWithUpstream 1 debian

Se você decidir parar de usar o modo mergeWithUpstream, desconfigure a propriedade mergeWithUpstream como se segue:

svn propdel mergeWithUpstream debian/

Se não desejar armazenar as fontes de origem de todos os seus pacotes no repositório, você pode passar o switch --no-branches para o svn-inject, o que vai prevenir o svn-inject de criar um sub-directório branches.

suporte a formato 3.0 do dpkg-source

O svn-buildpackage pode construir pacotes usando o formato de fonte 3.0, inclusive usando ../tarballs/foo_1.2.3-1.orig.tar.bz2 em modo mergeWithUpstream. Assegure que debian/source/format existe e foi adicionado à cópia de trabalho local do Subversion.

Se debian/source/format existir e conter 3.0 *, o svn-buildpackage procura um .orig.tar.bz2 no directório tarballs e usa-o para a construção subsequente.

Exemplo 3.2. verificar formatos fonte com o dpkg-source

dpkg-source --print-format precisa de alguma ajuda para compreender as disposições comuns usadas com subversion. O comando precisa de dois directórios - o directório de trabalho actual é usado para encontrar o tarball original e o directório especificado é usado para localizar ./debian/changelog. Mude para o directório que contém o tarball antes de correr dpkg-source --print-format:

$ svn mkdir debian/source
$ echo "3.0 (quilt)" > debian/source/format
$ svn add debian/source/format
$ pushd ../tarballs/
$ dpkg-source --print-format ../trunk/
3.0 (quilt)
$ popd

Preparar patches em pacotes 3.0 do dpkg-source

Quando usar 3.0 (quilt) e mergeWithUpstream, use o svn-do para desempacotar a fonte da origem e depois simplesmente edite ou aplique patch aos ficheiros necessários para a primeira patch. Depois faça o dpkg-source preparar as patches para si:

Exemplo 3.3. Deixar o dpkg-source preparar patches para 3.0 (quilt)

$ dpkg-buildpackage -uc -us -S

Agora use um nome utilizável para a patch e mude esse nome no ficheiro series, termine a sub-shell do svn-do para que os resultados sejam copiados de volta para o trunk. Repita para as patches subsequentes.