tener - ¿Cómo adjuntar una nueva solicitud de extracción a un problema existente en github?
¿qué hace git log-oneline? (9)
No estoy seguro, pero tengo un vago recuerdo de haber creado una solicitud de extracción de github con "Problema 4" o algo en el título, y se adjuntó automáticamente al Problema 4 en el proyecto al que lo presenté. Lo intenté de nuevo recientemente y no funcionó, simplemente creó un nuevo problema. No veo ninguna opción como "Adjuntar al 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 del problema. ¿Hay alguna manera de hacer esto, para ayudar a los propietarios de proyectos a mantener limpia su página de Problemas y evitar la duplicación?
Edición : para aclarar, sé que crear una solicitud de extracción siempre crea un nuevo problema. Me gustaría adjuntar la solicitud de extracción a un problema existente .
Agregar una solicitud de extracción a un problema anterior existente es fácil suponiendo que se bifurque utilizando los medios github normales .
Simplemente haga referencia al problema en su mensaje de confirmación usando cualquiera de las palabras clave admitidas :
- cerrar
- cierra
- cerrado
- fijar
- arreglos
- fijo
- resolver
- resuelve
- resuelto
Por ejemplo: "esto confirma correcciones # 116"
El texto que hace referencia al problema no tiene que aparecer en la línea de asunto de su confirmación.
Inserte su compromiso en su repositorio github y la solicitud de extracción se adjuntará automáticamente al problema.
Nota: Si bien no es obligatorio, se recomienda encarecidamente que confirme cualquier cosa que formará parte de una solicitud de extracción a una sucursal separada específica para ese problema, ya que las confirmaciones futuras en esa rama se agregarán a la solicitud de extracción (automáticamente por github ). Por lo tanto, si no hizo una rama separada, la dejó en el maestro y luego siguió desarrollando, todos sus compromisos no relacionados con el maestro se agregarán a su solicitud de extracción.
El proyecto "hub" puede hacer esto:
https://github.com/defunkt/hub
En el repositorio y la rama a la que desea enviar una solicitud de extracción desde:
$ hub pull-request -i 4
Esto utiliza 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
En el caso de que utilice 2-factor-auth con github, deberá proporcionar el identificador de autenticación como encabezado 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
Otra herramienta posible es el sitio web Issue2Pr, que convierte sus problemas en solicitudes de extracción .
¡Es muy simple y eficaz!
Recursos:
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:
- Pregunte a
technoweenie
en el proyectofaraday
(https://api.github.com/repos/ technoweenie / faraday / pulls) - para extraer de la rama de
synchrony
en la bifurcación desmparkes
("head": " smparkes : synchrony ") - a la rama
master
en la horquilla detechnoweenie
("base": " master ") - y adjunte la solicitud de extracción al problema 15 ("problema": " 15 ")
- con la solicitud de extracción del autor
smparkes
(--user " smparkes ") - se le pedirá su contraseña de GitHub
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á el issue_2
de issue_2
para convertir el problema # 2 en una solicitud de extracción.
También puede utilizar Gub para enviar solicitudes de extracción para su problema.
También le ayuda a usar un estilo adecuado de solicitud de horquilla / extracción.
Edición: 5/5/2013
Para que Gub envíe la solicitud de extracción para el problema # 123, debe ejecutar lo siguiente:
$ gub start 123
Esto creará un nuevo número de rama-123. Una vez que hayas terminado de trabajar en el problema, ejecuta:
$ gub finish
Voila!
Nota: Soy el autor de la gema Gub.
Usando la herramienta git-hub , puedes hacer esto con:
$> git hub pull attach 123
Esto convertiría el problema # 123 en la solicitud de extracción # 123, manteniendo así toda la discusión sobre el problema en una sola ubicación.
Esta otra respuesta explica cómo usar cURL ( curl
) para crear una solicitud de extracción desde un problema a través de la API de GitHub . Aquí se explica cómo hacerlo utilizando 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 . Vio el technoweenie de technoweenie '' technoweenie '', pensó en algo que se debería cambiar e hizo un Issue en ese repo para él, Issue # 15 . Más tarde, descubrirá que nadie más ha realizado el cambio propuesto y también tiene tiempo para hacerlo usted mismo. Usted envía un faraday a su propia cuenta , luego escribe sus cambios y los empuja a su fork bajo una rama llamada synchrony . Crees que Technoweenie debería atraer esos cambios a la rama master de su repo. Este es el comando que escribiría para convertir su problema 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 el número 15 es una solicitud de extracción.