¿Cómo hago una request de extracción solo para un compromiso específico en Mercurial?

He bifurcado un repository de Mercurial alojado en Bitbucket. No tengo permissions de escritura para el repository original. Hice varias confirmaciones para mi tenedor. Vamos a llamarlos A, B, C y D, es decir, lo último primero:

  • D [último]
  • do
  • B <— Solo los cambios realizados en este compromiso
  • A [más antiguo]

Ahora quiero hacer una request de extracción para todos los cambios en la confirmación B exclusivamente, ignorando A, C y D. ¿Hay alguna manera de hacer esto?

Antes que nada, vamos a entender cómo se ve tu gráfica. Supongamos que la punta de su repository bifurcado es x tiene una historia lineal sin ramificaciones. Entonces tu historia se ve así:

 [1000's of commits] -> parent(parent(x)) -> parent(x) -> x 

Ahora hizo cuatro commits, a saber, A , B , C y D siendo A el más antiguo y D el más reciente. Ahora tu gráfico se ve así:

 x -> A -> B -> C -> D 

Tenga en count que el historial anterior a x todavía está intacto, no está incluido anteriormente porque no se requiere información para lo que estamos discutiendo.

Ahora desea crear una request de extracción que contenga solo B changeset. Eso no es posible con el estado actual porque el repository principal no sabe acerca de A también que es padre de B No puedes tener un hijo hasta que el / los padre / s no estén allí.

Entonces, si queremos simplemente hacer una request de extracción del set de cambios B , necesitamos rebase a establecer la rebase en x .

rebase es una extensión en Mercurial y puedes activarla agregando las siguientes líneas a tu .hg/hgrc

 [extensions] rebase = 

Vamos a rebase una vez que tengamos la extensión habilitada.

 hg rebase -s B -dx 

Esto dará como resultado:

 x -> A \-> B -> C -> D 

Ahora puede crear una request de extracción porque el padre de B es x . También puede tener un estado más limpio de la historia volviendo a establecer C para volver a A Dará como resultado dos twigs, una que contiene los sets de cambios que desea insert, otros sets de cambios locales. Rebase de nuevo se ve así:

 hg rebase -s C -d A 

Y el estado de la historia resultante es:

 x -> A -> C -> D \-> B 

Ahora puede crear fácilmente una request de extracción que contenga solo B changeset.

Enlace relacionado:

Extensión de Rebase

Intereting Posts