para crucible clientes cliente git github gerrit pull-request bitbucket-server

crucible - ¿Las solicitudes de extracción son parte de Git, o una característica de herramientas como GitHub, Gerrit y Atlassian Stash?



clientes git (2)

Las solicitudes de extracción parecen ser la forma más común de revisar el código con Git. Sin embargo, no está claro si este término significa lo mismo cuando se usa la función git request-pull incorporada, o una herramienta diferente.

¿Las solicitudes de extracción son una función intrínseca de Git o es un término común para herramientas como GitHub, Gerrit o Atlassian Stash?

¿La discusión y el "resultado" de la revisión del código se almacenan en el historial de confirmación de Git o en una base de datos separada?


El comando git request-pull se puede usar para crear una "solicitud de extracción" en git nativo. Cuando se ejecuta, Git genera un resumen de los cambios en un proyecto y la URL del repositorio de Git desde donde se puede extraer el código. Luego se puede enviar por correo a una lista de correo o a los mantenedores del proyecto, quienes luego pueden introducir los cambios en sus propios repositorios.

Esta sección del libro Pro Git contiene información más específica sobre el comando git request-pull .


Las solicitudes de extracción son un concepto simple que se originó cuando se creó Git, pero desde entonces se ha llevado a diferentes niveles.

La esencia es que no tiene derechos de inserción en el repositorio en el que desea contribuir, así que en lugar de ello, bifurque el repositorio, haciendo su copia privada (un clon ya lo hace por cierto) y en su lugar, contribuye. Y luego le pide a un mantenedor del repositorio original que introduzca sus cambios. Así que esencialmente estás enviando un parche.

Ahora, como dije, hay diferentes maneras de hacer esto, pero todo se reduce a solicitar a un mantenedor que introduzca sus cambios, de ahí el nombre. El propósito original para el que se creó Git es el kernel de Linux, y se han estado desarrollando usando listas de correo para siempre. Así que para ellos, una solicitud de extracción es en realidad enviar un parche por correo electrónico; esos parches son en realidad objetos de compilación prepagados por algunas cosas normales de comunicación por correo electrónico: Git tiene herramientas para generar esto.

git request-pull es una herramienta similar para generar un mensaje que solicita una solicitud de extracción. Pero en este caso, está más cerca de la idea de atracción. Si bien los parches solo se pueden aplicar, las solicitudes creadas por request-pull realidad le dicen al mantenedor que extraiga los cambios desde un repositorio remoto diferente.

El libro de Git tiene este ejemplo:

$ git request-pull origin/master myfork The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40: John Smith (1): added a new function are available in the git repository at: git://githost/simplegit.git featureA Jessica Smith (2): add limit to log function change log output to 30 from 25 lib/simplegit.rb | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)

Entonces, en realidad es solo una utilidad para generar mensajes para ejecutar el concepto subyacente.

Otros hosts de código fuente como GitHub hacen esto de manera similar. Cuando creas una solicitud de extracción en GitHub, solo creas un problema que contiene información adicional sobre dónde pueden estar los mantenedores. Por supuesto, todo está en un solo sitio web, pueden vincular todo un poco más y proporcionar esos botones de combinación de un solo clic, por ejemplo.

Pero el concepto básico sigue siendo el mismo: solicitar a un mantenedor que realice algunos cambios que haya realizado. La única diferencia es la forma en que se comunica esta solicitud.