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