¿Cómo puedo clonar la revisión sin perder el número de revisión?

Tengo un repository que tiene dos twigs, por default y BranchA . El gráfico es algo como esto:

 default rev10 (Node: aaaaa) default rev9 (Node: bbbbb) default rev8 ------------------BranchA rev7 ------------------BranchA rev6 ------------------BranchA rev5 default rev4 default rev3 default rev2 default rev1 

Luego descubrí que quiero clonar el repository para la revisión 9, así que lo cloné usando la function "Clonar a revisión". Y llena el número de revisión como: bbbbb .

Cuando abro el nuevo repository, la información de BranchA no está en él. El gráfico del repository se ve así:

 default rev6 (Node: bbbbb) default rev5 default rev4 default rev3 default rev2 default rev1 

¿Puedo recuperar mi antiguo número de revisión? ¿Dónde está la información de la sucursal?

Cuando proporciona una revisión al command hg clone , solo extrae este set de cambios y todos sus antecesores en el nuevo repository como un nuevo encabezado. Sin un argumento de revisión, todos los sets de cambios se clonarán y la numeración también se conservará. A continuación, puede deshacerse de rev10 utilizando hg strip .

Los numbers de revisión son locales para un repository dado. Simplemente le indican el order de los sets de cambios en el repository; si tiene 6 sets de cambios, entonces deben estar numerados del 0 al 5. Mercurial no puede "devise" numbers de revisión adicionales para mantener intactos los numbers de revisión originales.

La razón por la que los numbers de revisión son locales es la naturaleza distribuida de Mercurial. Digamos que ambos tenemos el segundo repository anterior con 6 sets de cambios. Si creo un nuevo set de cambios, será el número 7 en mi repository. Mercurial solo elige el siguiente integer.

Si también creas un set de cambios, también obtendrás el número 7. Ahora, si te retiro, entonces tu número 7 será mi número 8: el número de revisión cambia. Esta es la razón por la que solo debe usar los hashes de sets de cambios globalmente únicos cuando se comunica con otros. Permanecen igual después de empujar / tirar.

Los hashes del set de cambios son realmente 40 caracteres hexadecimales: son valores hash SHA-1 de 160 bit. Mercurial normalmente solo mostrará los primeros 12 caracteres, a less que agregue --debug . Puede usar un prefijo de cualquier tamaño para especificar el set de cambios, por lo que cualquiera de

 $ hg log -r 41453d55b481ddfcc1dacb445179649e24ca861d # full $ hg log -r 41453d55b481 # normal $ hg log -r 41453d # smaller 

hará lo mismo. El prefijo solo tiene que ser único en el repository y normalmente 12 caracteres son suficientes para garantizarlo. Es el valor hash de 12 caracteres al que querrá referirse cuando hable con colegas ("¿puede extraer 41453d55b481 y probar nuevamente?") O al escribir notas de la versión ("el error se solucionó en 41453d55b481").

En una herramienta como TortoiseHg, puede usar VerIr a revisión para saltar a un set de cambios usando su hash.