Comment envoyer un patch à un projet Launchpad?

20

Avec un background Git / GitHub et connaissant très peu Bazaar VCS, je voudrais occasionnellement signaler un bug aux projets hébergés sur Launchpad, et même envoyer un patch. Je voudrais le faire d'une manière "correcte" afin qu'il soit prêt à fusionner ou à s'améliorer sans se mettre en travers.

Je n'arrive pas à trouver un mode d'emploi simple décent adapté à mes besoins.

Ce que j'ai fait jusqu'à présent:

  1. J'ai créé un compte Launchpad,

  2. a signalé le bug,

  3. installé Bazaar et configuré les clés SSH, etc.

Maintenant, si c'était GitHub, je

  1. bifurquer le repo,

  2. cloner le dépôt fourchu,

  3. créer une branche bien nommée et faire le travail,

  4. commit + push,

  5. créer une demande d'extraction à l'aide de GitHub WUI.

Mais ce n'est pas GitHub, et les architectures Launchpad et Bazaar semblent assez différentes de leurs homologues GitHub / Git.

Une âme bienveillante pourrait-elle donc m'éviter de me noyer dans des tonnes de documents et compiler un chemin simple, principalement la deuxième partie? Incluant éventuellement des commandes CLI pertinentes lorsqu'elles sont nécessaires?


Edit: Il semble que je devrais clarifier si je pose des questions spécifiquement sur les packages Ubuntu (quoi que cela signifie) ou les projets Launchpad.

Je ne me soucie pas vraiment de la distinction entre les packages Ubuntu et les packages non Ubuntu. Tout logiciel pourrait être dans Ubuntu aujourd'hui et en sortir demain, ou vice-versa. Le développement est ce qui compte beaucoup plus que la distribution.

Je supposais donc que

  • tous les packages distribués dans Ubuntu ne sont pas hébergés sur Launchpad,

  • il existe un workflow "officiel" ou "par défaut" pour Launchpad (enfin si tous les développeurs peuvent se mettre d'accord sur l'utilisation de Bazaar, pourquoi la plupart d'entre eux ne pourraient-ils pas s'entendre sur un workflow de patch?),

donc je pose des questions sur la manière Launchpad, pas la manière Ubuntu. Et j'ai choisi AU parce que puisque l'intersection est vaste, je suppose que c'est assez sur le sujet ici.

Alois Mahdal
la source
ce court document est-il utile? dans l'affirmative, n'hésitez pas à développer la réponse existante au besoin doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial
david.libremone

Réponses:

15

Est-ce un projet Launchpad?

(Si vous savez déjà qu'il s'agit d'un projet Launchpad, vous pouvez ignorer cela.)

Tous les projets trouvés sur Launchpad n'y sont pas réellement hébergés et développés - certains sont des miroirs de code hébergés ailleurs (GitHub / Gitorious / etc), d'autres viennent de Debian. Ces sources originales sont appelées projets "en amont", et il est généralement préférable de soumettre des correctifs à la source et de laisser les modifications arriver "en aval" dans Ubuntu (généralement dans la prochaine version).

Il doit être clairement indiqué sur la page du projet, qu'il soit hébergé ailleurs ou sur Launchpad. Sinon, demandez simplement aux responsables du projet comment ils souhaitent recevoir les modifications. Certains projets en amont préfèrent des fichiers correctifs simples, d'autres préfèrent les soumissions / push via leurs hôtes respectifs.

En particulier, les paquets Ubuntu officiels (logiciels stockés dans les dépôts officiels Ubuntu que vous pouvez installer à partir du Centre logiciel) ont plusieurs façons de soumettre des correctifs, car beaucoup de ces paquets proviennent directement de Debian et devraient idéalement y être corrigés. plutôt que seulement dans Ubuntu. (C'est une toute autre question.)

Comment soumettre un patch

La manière générale de soumettre un patch est de créer votre branche, de vous y engager localement et de la repousser vers Launchpad:

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

Vous pouvez ensuite proposer la fusion de votre branche dans le parent à partir duquel vous avez créé votre branche, soit via le site Web, soit à l'aide de la bzr lp-proposecommande.

Si vous avez déposé un bogue et que votre branche le corrige, assurez-vous de faire ce qui suit lors de la validation, où 000000est remplacé par votre numéro de bogue, en supposant qu'il s'agit d'un bogue signalé sur Launchpad, et pas ailleurs à la place.

bzr commit --fixes=lp:000000

Une note sur le workflow "par défaut"

C'est à peu près le flux de travail moderne typique , que vous pouvez comparer à GitHub. Le Launchpad existe depuis un peu plus longtemps, donc ce flux de travail a évolué après coup, plutôt que d'être intégré au système depuis le début, donc certains projets plus anciens peuvent s'appuyer sur d'autres méthodes d'acceptation des correctifs. Cependant, la plupart des nouveaux projets s'appuient sur ce flux de travail, où sur GitHub les "demandes de tirage" ont toujours été là, et les gens l'utilisent par défaut car il n'y avait jamais de moyen de faire quelque chose de différent sur GitHub.

dobey
la source
8

Réponse initiale basée sur la réponse de dobey ici et la réponse de Jorge Castro à une question spécifique au projet. Modifications / corrections / suggestions bienvenues.

  1. Créez un compte Launchpad. Cela comprendra un nom d'utilisateur Launchpad ( LP-USER)

  2. Ajoutez votre clé SSH au tableau de bord à https://launchpad.net/~LP-USER/+editsshkeys

  3. Sur Launchpad, notez le nom du projet ( PROJECT-NAME).

  4. Signalez le problème par rapport au projet. Le problème se verra attribuer un numéro de bogue ( 000000).

  5. Assurez-vous que Bazaar est installé dpkg-query -l bzr. Vous voudrez peut-être lire sur l' intégration Bazaar / Launchpad .

  6. Configurer bzr avec bzr whoami "Your Name <[email protected]>"etbzr launchpad-login LP-USER

  7. Sur votre machine, consultez une branche locale du projet

    bzr branch lp:PROJECT-NAME
    

    (Cela créera un dossier appelé PROJECT-NAMEcontenant le dernier code de projet.)

  8. Lancez le projet. Faire des changements. Testez vos modifications. (Ces étapes sont spécifiques au projet et au problème.)

  9. Validez vos modifications, y compris le numéro de bogue ( 000000).

    bzr commit --fixes=lp:000000
    
  10. Cela ouvrira une boîte de dialogue de validation dans laquelle vous pourrez ajouter une entrée de journal des modifications expliquant vos modifications.

  11. Envoyez vos modifications à Launchpad. (Cela créera une nouvelle succursale distante associée à votre compte.)

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

    (NEW-BRANCH-NAME devrait être un nom descriptif court du problème résolu / fonctionnalité ajoutée)

  12. Ouvrez une succursale dans votre navigateur avec bzr lp-open ou en allant surhttps://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/

  13. Proposez une fusion avec bzr lp-proposeou à partir de l'URL à la dernière étape en sélectionnant "Proposer pour la fusion", en ajoutant une description, collez lp:PROJECT-NAMEla branche que vous souhaitez proposer et cliquez Submit.

david.libremone
la source
Question: Si mon "nom de projet" est ce que ubuntu/saucy/msttcorefontsje fais bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnameou simplementbzr push lp:~amandabee/msttcorefonts/actualbranchname
Amanda
La première: a bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnametravaillé
Amanda le