Cambiar el nombre de una rama durante una solicitud de extracción

101

En Github, puede realizar solicitudes de extracción para agregar funcionalidad a un proyecto. Las contribuciones de uno deben estar en una rama que, si se acepta la solicitud, se fusionará en la rama principal (o una análoga) del proyecto.

Ahora, envié una solicitud de extracción en Github y mis contribuciones están en una rama llamada patch-1. Puedo modificar el nombre de la sucursal localmente por

git branch -m patch-1 newname

y, en principio, también puedo cambiarle el nombre en mi repositorio bifurcado en Github siguiendo las instrucciones que se encuentran en esta respuesta . En la práctica, esto se hace quitando la rama vieja, patch-1en mi caso, y repusiéndola con un nombre diferente newname.

¿Está permitido cambiar el nombre de la rama patch-1en mi repositorio bifurcado en Github cuando constituye una solicitud de extracción? ¿O causa problemas en la gestión de solicitudes de extracción?

¿Hay alguna forma de cambiar el nombre de una rama en un repositorio bifurcado en Github cuando esa rama es una solicitud de extracción?

Michele
fuente

Respuestas:

117

"Cambiar el nombre" de una rama remota en git, como lo indica el enlace que proporcionaste, en realidad es simplemente eliminar una rama, seguido de presionar una nueva con el mismo hash de confirmación pero con un nuevo nombre. Si tiene una solicitud de extracción abierta para la rama patch-1, cuando elimine esa rama, la solicitud de extracción se cerrará.

Entonces, no, no puede cambiar el nombre de la rama con una solicitud de extracción abierta sin eliminar la rama y eliminar la solicitud de extracción. Sin embargo, no hay nada que le impida hacer eso, empujar una nueva rama con un nuevo nombre y crear una nueva solicitud de extracción.

Arbylee
fuente
186
una razón para no hacerlo es perder la discusión sobre el RP existente.
Johnny Everson
6
No entiendo por qué hay una restricción tan estricta para cambiar el nombre de la rama de origen en PR. El mismo comportamiento molesto existe en bitbucket. Otro enfoque sería editar el PR y cambiar la rama fuente a otra rama. Uno podría decir "si cambia la rama de origen, entonces es un nuevo PR de todos modos". Técnicamente, sí, pero tampoco nada impide que el desarrollador configure el flujo ascendente desde una rama completamente diferente y luego haga un git push -f. El PR se actualiza con un código completamente nuevo y sigue siendo el "mismo" PR.
L. Holanda
31

Respuesta corta:

No

Enfoque alternativo:

  1. Abra un nuevo RP con una nueva sucursal (renombrada)
  2. Cerrar el antiguo RP haciendo referencia al nuevo (por ejemplo, cerrado a favor de #new_pr_id)
  3. Modificar la descripción del nuevo RP (p. Ej. Reemplaza #old_pr_id)
  4. (opcional) Haga un comentario sobre la discusión relevante sobre el antiguo RP

Nota:

El nombre de una sucursal remota (que constituye un PR) necesitaba cambiar, porque el sistema de compilación necesitaba el nombre de la sucursal que termina con el ID del ticket. Sin embargo, el RP se abrió antes de la creación oficial del boleto (a partir de las especificaciones) y había contenido una discusión valiosa. El enfoque descrito fue la única forma de hacer que el sistema de compilación funcione y tampoco perder información (aunque hubo un paso adicional para rastrearlo).

Slobodan Ilic
fuente
9
Dado que las ramas generalmente se eliminan después de fusionarse, creo que es mejor "tolerar" que el nombre sea inexacto durante un tiempo que agregar la sobrecarga de un nuevo PR que se refiere al antiguo PR con el propósito de rastrear la discusión histórica.
Neo