¿Cómo se adjunta una nueva solicitud de extracción a un problema existente en github?


No estoy seguro, pero tengo un vago recuerdo de crear una solicitud de extracción de github con "Issue 4" o algo así en el título, y se adjuntó automáticamente al Issue 4 en el proyecto al que lo estaba enviando. Lo intenté de nuevo recientemente y no funcionó just simplemente creó un nuevo problema en su lugar. No veo ninguna opción como " Adjuntar a problema "en la nueva página de solicitud de extracción, ni" Abrir una nueva solicitud de extracción para este problema " en la página de problema. ¿Hay alguna manera de hacer esto, para ayudar al proyecto los propietarios mantienen su página de problemas limpia y evitar la duplicación?

Editar: Para aclarar, sé que crear una solicitud de extracción siempre crea un nuevo problema. En su lugar, me gustaría adjuntar la solicitud de extracción a un problema existente.

Author: MatrixFrog, 2010-12-25

9 answers

El proyecto "hub" puede hacer esto:

Https://github.com/defunkt/hub

En el repositorio y la rama desde la que desea enviar una pull request:

$ hub pull-request -i 4

Esto usa la API de GitHub, y adjunta una solicitud de extracción para la rama actual al número de problema existente 4.


EDITAR: Comentario de @atomicules: Para ampliar la respuesta de @MichaelMior un ejemplo completo es:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
 236
Author: Christian Oudard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-01 14:16:07

Agregar una solicitud de extracción a un problema ascendente existente es fácil asumiendo que se bifurcó usando los medios normales de github.

Simplemente haga referencia al problema en su mensaje de confirmación utilizando cualquiera de las palabras clave compatibles :

  • cerrar
  • cierra
  • cerrado
  • fix
  • correcciones
  • fijo
  • resolver
  • resuelve
  • resuelto

Por ejemplo:"este commit corrige #116"

El texto que hace referencia a no es necesario que issue aparezca en la línea de asunto de tu commit.

Envía tu commit a tu repositorio de github y la solicitud de extracción se agregará automáticamente al problema.

Nota: Si bien no es obligatorio, se recomienda encarecidamente que confirme cualquier cosa que sea parte de una solicitud de extracción a una rama separada específica para ese problema, porque las futuras confirmaciones en esa rama se agregarán a la solicitud de extracción (automáticamente por github). Por lo tanto, si usted no hizo un separado branch, lo dejó en master, y luego siguió desarrollándose, luego todas sus confirmaciones no relacionadas con master se agregarían a su solicitud de extracción.

 204
Author: masukomi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-23 14:36:02

Puede crear una Solicitud de extracción a partir de un problema existente con la API de solicitud de extracción :

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": "15", "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

Esto crea una solicitud de extracción:

  • preguntar technoweenie, en el proyecto faraday (https://api.github.com/repos/technoweenie/faraday/pulls)
  • para tirar de la rama synchrony en la bifurcación smparkes' ("cabeza": "smparkes:sincronía")
  • a la rama master en la bifurcación de technoweenie ("base": "maestro")
  • y adjunte la solicitud de extracción a la edición 15 ("edición": "15")
  • con la solicitud de extracción author smparkes (user user "smparkes")
  • se te pedirá tu contraseña de GitHub
 143
Author: Rory O'Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-11 16:21:46

Otra herramienta posible es la Sitio web Issue2Pr lo que convierte tus problemas en Solicitudes de extracción.

Es muy simple y eficaz!

introduzca la descripción de la imagen aquí

Recursos:

 17
Author: nulltoken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-30 08:14:51

Esta otra respuesta explica cómo usar cURL (curl) para crear una solicitud de extracción a partir de un problema a través de la API de GitHub . He aquí cómo hacerlo usando HTTPie (http), que produce un comando más fácil de leer y editar:

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

Luego escriba su contraseña de GitHub cuando se le solicite.

Ejemplo explicado

Has iniciado sesión en GitHub con nombre de usuario smparkes y contraseña hunter2 . Tú viste technoweenie's repo faraday, pensó en algo que debería ser cambiado, e hizo un problema en ese repo para ello, Problema #15. Más tarde, usted encuentra que nadie más ha hecho su cambio propuesto, y también tiene algún tiempo para hacerlo usted mismo. You fork faraday to your own account , then write your changes and push them to your fork under a branch named sincronía. Usted piensa technoweenie debe extraer esos cambios a la maestro rama de su repositorio. Este es el comando que escribiría para convertir su edición anterior en una solicitud de extracción para esta situación:

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for [email protected]: hunter2

Ahora Problema #15 es una Petición de Extracción.

 10
Author: Rory O'Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:14

En caso de que uses 2-factor-auth con github necesitarás proporcionar el encabezado authtoken as en la solicitud:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls
 3
Author: Jörn Hees,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-15 17:14:17

También puede usar Gub para enviar solicitudes de extracción para su problema.

También le ayuda a usar un estilo de solicitud de fork/pull adecuado.

Editar: 10/5/2013

Para que Gub envíe pull-request para la edición # 123, debe ejecutar lo siguiente:

$ gub start 123

Esto creará una nueva rama issue-123. Una vez que haya terminado de trabajar en el problema, ejecute:

$ gub finish

Voila!

Nota: Soy el autor de Gub gem.

 1
Author: Omar Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-05 21:31:15

Usando la herramienta git-hub, puedes hacer esto con:

$> git hub pull attach 123

Esto convertiría el problema #123 en pull request #123, manteniendo así toda la discusión sobre el problema en una sola ubicación.

 0
Author: Gautam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-26 13:48:37

Si tiene 2FA habilitado, puede usar pasar el token con HTTPie:

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

Esto usará la rama issue_2 para convertir el problema #2 en una solicitud de extracción.

 0
Author: Kyle Gibson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-31 17:14:45