Como manter um pacote upstream corrigido

5

Estou procurando a melhor maneira de manter uma versão corrigida de um pacote ubuntu upstream. Aqui está a situação:

Temos nosso próprio servidor executando reprepro, que hospedaria o pacote modificado. Nossos outros pacotes são gerenciados usando o git e as ferramentas de empacotamento do git (git-dch, git-buildpackage).

Eu tenho o arquivo .diff que contém o patch para o código fonte do upstream, que apliquei antes fazendo apt-get source pkgname , aplicando-o e executando o debuild. Eu gostaria de rastreá-lo corretamente desta vez usando o git.

Qual é o melhor processo para gerenciar isso?

    
por Daenyth 14.06.2011 / 18:20

2 respostas

2

Eu sugeriria algo um pouco diferente de Flimzy. Dê uma olhada em git-import-dsc e possivelmente em git-debimport . Eles criarão magicamente, automaticamente, ramos separados de upstream, debian e prinstine-tar no pacote fonte do Debian. Você pode então criar seu próprio ramo para o seu conjunto de patches. Cada vez que um novo upload para o Ubuntu é feito, você pode simplesmente executar git-import-dsc no novo pacote e mesclar com sua ramificação.

Ainda mais simples seria usar bzr se você não for casado com git . Cada pacote do Ubuntu também pode ser encontrado em uma ramificação bzr . bzr branch ubuntu:$PACKAGE_NAME irá pegar o ramo fonte para você. Faça suas alterações e se comprometa. Então, quando um novo upload do Ubuntu for feito, você pode simplesmente executar bzr merge-package ubuntu:$PACKAGE_NAME

    
por andrewsomething 18.06.2011 / 18:42
1

Espero que eu esteja entendendo sua pergunta completamente ...

Veja como eu faço:

  1. Coloque os arquivos * .orig.tar.gz * .diff.gz e * .dsc em um diretório apropriadamente chamado para o seu pacote
  2. Descompacte a origem (dpkg-source -x * .dsc). Você terá agora três arquivos e um subdiretório
  3. Confirme isso com o seu RCS (commit A)
  4. Aplique suas alterações e se comprometa com seu RCS (Commit B)
  5. Faça as alterações futuras e confirme (Commit N)

Quando uma nova versão do desenvolvedor sai:

  1. Crie um diff entre o Commit A e o Commit N
  2. Repita as etapas de 1 a 3 acima
  3. Aplique seu diff (criado na etapa 1) e commit (novo Commit A)
  4. Faça as alterações futuras e confirme (Commit N)

Enxaguar, repita.

    
por Flimzy 18.06.2011 / 13:39