¿Cómo envío un parche a un proyecto de Launchpad?

20

Con un fondo de Git / GitHub y sabiendo muy poco sobre Bazaar VCS, me gustaría informar ocasionalmente de un error a los proyectos alojados en Launchpad e incluso enviar un parche. Me gustaría hacerlo de una manera "adecuada" para que esté listo para fusionarse o mejorar sin interferir.

Parece que no puedo encontrar un How-to simple y decente adecuado para mis necesidades.

Lo que hice hasta ahora:

  1. He creado una cuenta de Launchpad,

  2. informó el error,

  3. bazar instalado y configurar claves SSH, etc.

Ahora si fuera GitHub, me gustaría

  1. bifurcar el repositorio,

  2. clonar el repositorio bifurcado,

  3. crear una rama con un nombre sensato y hacer el trabajo,

  4. commit + push,

  5. cree una solicitud de extracción con GitHub WUI.

Pero no es GitHub, y las arquitecturas Launchpad y Bazaar parecen bastante diferentes de sus contrapartes GitHub / Git.

Entonces, ¿podría un alma amable salvarme de ahogarme en toneladas de documentos y compilar un camino sencillo, principalmente la segunda parte? ¿Posiblemente incluye comandos CLI relevantes cuando son necesarios?


Editar: Parece que debería aclarar si estoy preguntando específicamente sobre los paquetes de Ubuntu (lo que sea que signifique) o los proyectos de Launchpad.

Realmente no me importa mucho la distinción entre paquetes de Ubuntu y paquetes que no son de Ubuntu. Cualquier software podría estar en Ubuntu hoy y fuera de él mañana, o viceversa. El desarrollo es lo que importa mucho más que la distribución.

Entonces asumí que

  • no todos los paquetes distribuidos en Ubuntu están alojados en Launchpad,

  • existe un flujo de trabajo "oficial" o "predeterminado" para Launchpad (bueno, si todos los desarrolladores pueden ponerse de acuerdo en usar Bazaar, ¿por qué la mayoría de ellos no podría estar de acuerdo con un flujo de trabajo de parcheo?),

así que estoy preguntando sobre el modo Launchpad, no el modo Ubuntu. Y elegí AU porque, dado que la intersección es vasta, supongo que es un tema muy interesante aquí.

Alois Mahdal
fuente
¿Ayuda este breve documento? en caso afirmativo, siéntase libre de ampliar la respuesta existente según sea necesario doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial
david.libremone

Respuestas:

15

¿Es un proyecto de Launchpad?

(Si ya sabe que es un proyecto de Launchpad, puede omitir esto).

No todos los proyectos encontrados en Launchpad están realmente alojados y desarrollados allí; algunos son espejos de código alojado en otro lugar (GitHub / Gitorious / etc), otros provienen de Debian. Estas fuentes originales se conocen como proyectos "ascendentes", y generalmente es mejor enviar parches a la fuente y dejar que los cambios lleguen "descendentes" en Ubuntu (generalmente en la próxima versión).

Debe indicarse claramente en la página del proyecto si está alojado en otro lugar o en Launchpad. Si no es así, solo pregunte a los encargados del proyecto cómo desean recibir los cambios. Algunos proyectos ascendentes prefieren archivos de parche simples, otros prefieren envíos / envíos a través de sus respectivos hosts.

Como nota especial, los paquetes oficiales de Ubuntu (software almacenado en los repositorios oficiales de Ubuntu que puede instalar desde el Centro de software) tienen algunas formas diferentes de enviar parches, ya que muchos de esos paquetes provienen directamente de Debian, y lo ideal es que se arreglen allí en lugar de solo en Ubuntu. (Esta es otra pregunta).

Cómo enviar un parche

La forma general de enviar un parche es crear su rama, comprometerse localmente y enviarla nuevamente a Launchpad:

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

Luego puede proponer que su rama se fusione con la matriz desde la que se bifurcó, ya sea a través del sitio web o utilizando el bzr lp-proposecomando.

Si ha archivado un error, y su rama lo soluciona, asegúrese de hacer lo siguiente cuando se compromete, donde 000000se reemplaza con su número de error, suponiendo que es un error reportado en Launchpad, y no en otro lugar.

bzr commit --fixes=lp:000000

Una nota sobre el flujo de trabajo "predeterminado"

Este es más o menos el flujo de trabajo moderno típico , que puede comparar con GitHub. Sin embargo, Launchpad ha durado un poco más, por lo que este flujo de trabajo evolucionó después del hecho, en lugar de integrarse en el sistema desde el principio, por lo que algunos proyectos más antiguos pueden depender de otros métodos para aceptar parches. Sin embargo, la mayoría de los proyectos más nuevos se basan en este flujo de trabajo, donde en GitHub las "solicitudes de extracción" siempre han estado allí, y la gente simplemente usa de forma predeterminada porque nunca hubo un medio para hacer algo diferente en GitHub.

dobey
fuente
8

Respuesta inicial basada en la respuesta de Dobey aquí y la respuesta de Jorge Castro a una pregunta específica del proyecto. Ediciones / correcciones / sugerencias bienvenidas.

  1. Crea una cuenta de Launchpad. Esto incluirá un nombre de usuario de Launchpad ( LP-USER)

  2. Agregue su clave SSH a la plataforma de lanzamiento en https://launchpad.net/~LP-USER/+editsshkeys

  3. En Launchpad, anote el nombre del proyecto ( PROJECT-NAME).

  4. Informe el problema contra el proyecto. Al problema se le asignará un número de error ( 000000).

  5. Asegúrate de que Bazaar esté instalado dpkg-query -l bzr. Es posible que desee leer sobre la integración de Bazar / Launchpad .

  6. Configure bzr con bzr whoami "Your Name <[email protected]>"ybzr launchpad-login LP-USER

  7. En su máquina, consulte una sucursal local del proyecto

    bzr branch lp:PROJECT-NAME
    

    (Esto creará una carpeta llamada que PROJECT-NAMEcontiene el último código del proyecto).

  8. Poner en marcha el proyecto. Hacer cambios. Prueba tus cambios. (Estos pasos son específicos del proyecto y del problema).

  9. Confirma tus cambios, incluido el número de error ( 000000).

    bzr commit --fixes=lp:000000
    
  10. Eso abrirá un diálogo de confirmación donde puede agregar una entrada de registro de cambios que explique sus cambios.

  11. Empuje sus cambios a Launchpad. (Esto creará una nueva sucursal remota asociada con su cuenta).

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

    ( NEW-BRANCH-NAMEdebe ser un nombre descriptivo breve del problema solucionado / función agregada)

  12. Abra la rama en su navegador con bzr lp-openo yendo ahttps://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/

  13. Proponga una fusión con bzr lp-proposeo desde la URL en el último paso seleccionando "Proponer para fusionar", agregando una descripción, pegue lp:PROJECT-NAMEla rama en la que desea proponer y haga clic Submit.

david.libremone
fuente
Pregunta: Si mi "nombre del proyecto" es ¿ ubuntu/saucy/msttcorefontsestoy haciendo bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnameo simplemente?bzr push lp:~amandabee/msttcorefonts/actualbranchname
Amanda
El primero: bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnametrabajado
Amanda