2010-03-11 21 views
10

Nota: pedí esto ayer en kiln.stackexchange.com, pero no he recibido una respuesta, y está demorando mi trabajo. Así que pensé que lo probaría aquí ..Mercurial hg Subrepository issue - "abort: revisión desconocida"

Mi principal repositorio de Mercurial tiene un montón de subrepositories en ella Durante la configuración inicial, que cometió un error en mis .hgsub a saber, he señalado dos subrepositories en el mismo directorio

lo que debería haber tenido..:

sites/1=sites/1 
sites/2=sites/2 
sites/3=sites/3 

What De hecho, tuve:

sites/1=sites/1 
sites/2=sites/2 
sites/2=sites/3 

Error estúpido de copiar/pegar. Cometí el .hgsub incorrecto, sin darme cuenta de mi error. Algunas revisiones más adelante, al agregar algunos nuevos subpospositorios al .hgsub, noté el error y lo solucioné dentro de .hgsub. Me comprometí y seguí rodando. He comprometido una cantidad razonable de trabajo que preferiría no volver a hacer, ya que 'solucioné' el error en .hgsub.

Ahora llegamos al problema real: he hecho algunos cambios dentro del subrepository sites/3, y cuando intento de cometer el repositorio principal, me sale el siguiente error:

abort: unknown revision 'LongGUIDLookingString'

He encontrado this discussion, que parece abordar el mismo problema que estoy teniendo, pero no puedo entender cómo lo arregló. ¿Qué debo hacer para solucionar esto?

Sección pertinente .hgsubstate:

7d1e430ac5f12e00cb5bebcdf693e72db2c45732 sites/1 
6eea936a5b7cfff6169f59d0dc1c8c4eb5f8412d sites/2 
e2b83b301997de8add1b659d82a7ab8201bda653 sites/3 
+0

¿Hay un + al final de la cadena? – tonfa

+0

Sin más. Aquí está la cadena actual: 'e2b83b301997de8add1b659d82a7ab8201bda653'. – Tex

+0

@tonfa: ¿y si tiene el + al final? (Lo hace por mí, pero siendo ingognable, no sé a dónde ir desde aquí). –

Respuesta

13

supongo que el archivo .hgsubstate contiene ahora una Hashid (que es lo que su LongGUIDLookingString es) de repo3 en la entrada repo2.

Intenta editar .hgsubstate para apuntar a un hashid correcto/presente para cada repositorio.

Si eso no funciona, pegue su archivo .hgsubstate para que podamos ver cómo se puede ajustar.

+0

¿Estás hablando del conjunto de cambios hashid? Los identificadores de hash changeset de los subrepos no se parecen en nada a los hash en '.hgsubstate'. ¿O hay otro hashid asociado con el subrepositorio 'sites/3' (que no sea dentro de' .hgsubstate')? He agregado la sección relevante de '.hgsubstate' a la pregunta original. – Tex

+1

Ok, ahora veo que mercurial muestra una versión abreviada de cada ID de conjunto de cambios. 'hg --debug tags' obtiene la versión más larga. Ejecuté eso en 'sites/3', pegué el ID del conjunto de cambios de punta en' .hgsubstate' en la línea 'sites/3', y ahora puedo volver a cometer. Parece que debe ser limpiado ahora. ¡Gracias por la ayuda! – Tex

+1

Sin problema Debería haber mencionado los hashids largos (completos). Puede obtenerlos como {nodo} en el lenguaje de plantilla: hg log --template '{node}' con '{node | short}' obteniendo los que está acostumbrado a ver. –

Cuestiones relacionadas