Como envio um patch para um projeto do Launchpad?

19

Com experiência em Git / GitHub e conhecendo muito pouco sobre o Bazaar VCS, gostaria ocasionalmente de relatar um bug em projetos hospedados no Launchpad e até enviar um patch. Eu gostaria de fazê-lo de uma maneira "adequada", para que esteja pronto para mesclar ou melhorar sem atrapalhar.

Parece que não consigo encontrar um guia simples decente adequado às minhas necessidades.

O que eu fiz até agora:

  1. Eu criei uma conta no Launchpad,

  2. relatou o bug,

  3. Bazaar instalado e configurar chaves SSH etc.

Agora, se fosse o GitHub, eu teria

  1. bifurque o repo,

  2. clonar o repositório bifurcado,

  3. crie uma filial com nome saudável e faça o trabalho,

  4. confirmar + empurrar,

  5. crie uma solicitação de recebimento usando o GitHub WUI.

Mas não é o GitHub, e as arquiteturas do Launchpad e do Bazaar parecem bem diferentes de suas contrapartes do GitHub / Git.

Então, uma alma amável poderia me salvar de me afogar em toneladas de documentos e compilar um caminho simples, principalmente a segunda parte? Possivelmente incluindo comandos CLI relevantes quando necessários?


Edit: Parece que devo esclarecer se estou perguntando especificamente sobre pacotes Ubuntu (o que quer que isso signifique) ou projetos do Launchpad.

Eu realmente não me importo muito com distinção entre pacotes Ubuntu e pacotes não-Ubuntu. Qualquer software pode estar no Ubuntu hoje e sair amanhã, ou vice-versa. O desenvolvimento é o que importa muito mais do que distribuição.

Então eu estava assumindo que

  • nem todos os pacotes distribuídos no Ubuntu estão hospedados no Launchpad,

  • existe um fluxo de trabalho "oficial" ou "padrão" para o Launchpad (bem, se todos os desenvolvedores podem concordar em usar o Bazaar, por que a maioria deles não concordou com um fluxo de trabalho de correção?),

então estou perguntando sobre o modo Launchpad, não o modo Ubuntu. E eu escolhi a AU porque, como a interseção é vasta, acho que é bastante interessante aqui.

Alois Mahdal
fonte
este pequeno documento ajuda? se assim sinta-se livre para expandir a resposta existente quando necessário doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial
david.libremone

Respostas:

14

É um projeto do Launchpad?

(Se você já sabe que é um projeto do Launchpad, pode pular isso.)

Nem todos os projetos encontrados no Launchpad são realmente hospedados e desenvolvidos lá - alguns são espelhos de código hospedados em outros lugares (GitHub / Gitorious / etc), outros são do Debian. Essas fontes originais são conhecidas como projetos "upstream", e geralmente é melhor enviar correções na fonte e deixar que as mudanças cheguem "downstream" no Ubuntu (normalmente na próxima versão).

Deve ser claramente indicado na página do projeto se ele está hospedado em outro lugar ou na Barra de Ativação. Caso contrário, pergunte aos mantenedores do projeto como eles desejam receber as alterações. Alguns projetos upstream preferem arquivos de correção simples, outros preferem envios / empurrões por meio de seus respectivos hosts.

Como nota especial, os pacotes oficiais do Ubuntu (software armazenado nos repositórios oficiais do Ubuntu que você pode instalar a partir do Centro de Software) têm algumas maneiras diferentes de enviar patches, já que muitos desses pacotes vêm diretamente do Debian e devem, idealmente, ser corrigidos lá ao invés de apenas no Ubuntu. (Essa é outra questão.)

Como enviar um patch

A maneira geral de enviar um patch é fazer seu branch, comprometer-se localmente e enviá-lo de volta ao Launchpad:

bzr push lp:~user/project/branch-name

Em seguida, você pode propor que sua ramificação seja mesclada ao pai de onde você ramificou, seja pelo site ou usando o bzr lp-proposecomando

Se você registrou um bug e sua ramificação o corrigiu, faça o seguinte ao confirmar, onde 000000é substituído pelo número do seu bug, assumindo que é um bug relatado no Launchpad e não em outro lugar.

bzr commit --fixes=lp:000000

Uma observação sobre o fluxo de trabalho "padrão"

Esse é praticamente o fluxo de trabalho moderno típico , que você pode comparar com o GitHub. O Launchpad já dura um pouco mais, portanto, esse fluxo de trabalho evoluiu após o fato, em vez de ser incorporado no sistema desde o início, para que alguns projetos mais antigos possam contar com outros métodos de aceitação de patches. Porém, quase todos os projetos mais recentes contam com esse fluxo de trabalho, onde no GitHub as "solicitações de recebimento" sempre existiram e as pessoas simplesmente o usam porque nunca houve um meio de fazer algo diferente no GitHub.

dobey
fonte
7

Resposta inicial baseada na resposta de dobey aqui e na resposta de Jorge Castro a uma pergunta específica do projeto. Edições / correções / sugestões são bem-vindas.

  1. Crie uma conta no Launchpad. Isso incluirá um nome de usuário da barra de ativação ( LP-USER)

  2. Adicione sua chave SSH à barra de ativação em https://launchpad.net/~LP-USER/+editsshkeys

  3. No Launchpad, observe o nome do projeto ( PROJECT-NAME).

  4. Relate o problema no projeto. O problema receberá um número de bug ( 000000).

  5. Verifique se o Bazaar está instalado dpkg-query -l bzr. Você pode ler sobre a integração do Bazaar / Launchpad .

  6. Configure o bzr com bzr whoami "Your Name <[email protected]>"ebzr launchpad-login LP-USER

  7. Na sua máquina, confira uma filial local do projeto

    bzr branch lp:PROJECT-NAME
    

    (Isso criará uma pasta chamada que PROJECT-NAMEcontém o código de projeto mais recente.)

  8. Coloque o projeto em execução. Faça mudanças. Teste suas alterações. (Essas etapas são específicas do projeto e do problema.)

  9. Confirme suas alterações, incluindo o número do bug ( 000000).

    bzr commit --fixes=lp:000000
    
  10. Isso abrirá uma caixa de diálogo de confirmação na qual você pode adicionar uma entrada no registro de alterações que explica suas alterações.

  11. Envie suas alterações para o Launchpad. Isso criará uma nova filial remota associada à sua conta.

    bzr push lp:~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME
    

    ( NEW-BRANCH-NAMEdeve ser um nome descritivo curto do problema corrigido / recurso adicionado)

  12. Abra uma ramificação no seu navegador com bzr lp-openou indo parahttps://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/

  13. Propor uma mesclagem com bzr lp-proposeou a partir da URL na última etapa, selecionando "Propor para mesclagem", adicionando uma descrição, cole lp:PROJECT-NAMEo ramo que você deseja propor e clique em Submit.

david.libremone
fonte
Pergunta: Se o meu "nome do projeto" é o que ubuntu/saucy/msttcorefontsestou fazendo bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnameou apenasbzr push lp:~amandabee/msttcorefonts/actualbranchname
Amanda
O primeiro: bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnametrabalhou
Amanda